这篇文章主要讲解了“C语言的字符空间与非字符空间是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言的字符空间与非字符空间是什么”吧!
目录
一、字符空间与非字符空间概念
二、字符空间
三、非字符空间
四、void * 非字符空间形参化
一、字符空间与非字符空间概念
字符空间与非字符空间标识
空间首地址结束标识
二、字符空间
首地址: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语言的字符空间与非字符空间是什么”的内容了,经过本文的学习后,相信大家对C语言的字符空间与非字符空间是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是天达云,小编将为大家推送更多相关知识点的文章,欢迎关注!