当前位置:主页 > 软件编程 > C代码 >

C语言的字符空间与非字符空间你了解吗

时间:2022-06-25 08:07:45 | 栏目:C代码 | 点击:

前言

自学笔记,没有历史知识铺垫(省略百度部分)C语言字符空间与非字符空间

一、字符空间与非字符空间概念

字符空间与非字符空间标识

空间首地址结束标识

二、字符空间

首地址:char空间当作字符串来用,通常字符空间操作的函数以str开头,如int strlen(const char *p);结束标识:\0或者0x00

三、非字符空间

首地址:int *p /unsigned char *p /short *p /struct a *p 一般非const char *p都时非字符空间结束标识: 通常函数会提供长度指定的参数int len

四、void * 非字符空间形参化

为了避免参数的长度不一致,导致需要建立多个重复函数处理的问题
func(void * ,size_t len){...}

注意:

遇到void *通常不使用char *p[]开辟空间,可以使用unsigned char *p[] 除非知道该函数参数具体是什么逻辑如果函数形参是int *p之类带有数据类型,通常指的是单独空间而不是连续空间的传递
void func1(void *p, size_t len)
{
    unsigned char *temp = (unsigned char *)p;
    //41
    printf("%X\n", temp[0]);
}
int main()
{
    char a = 'A';
    func1(&a, sizeof(a));
    return 0;
}
void func1(void *p, size_t len)
{
	//4 循环处理使用
    printf("%d\n", len);
    unsigned char *temp = (unsigned char *)p;
    //1
    printf("%X\n", temp[0]);
    //2
    printf("%X\n", temp[1]);
    //3
    printf("%X\n", temp[2]);
    //3
    printf("%X\n", temp[3]);
}
int main()
{
    unsigned char a[] = {1,3,5,7};
    func1(a, sizeof(a));
    return 0;
}

总结

本章主要为C语言字符空间与非字符空间

您可能感兴趣的文章:

相关文章