前言
自学笔记,没有历史知识铺垫(省略百度部分)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之类带有数据类型,通常指的是单独空间而不是连续空间的传递
1
2
3
4
5
6
7
8
9
10
11
12
|
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; } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
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语言字符空间与非字符空间
本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注服务器之家的更多内容!
原文链接:https://blog.csdn.net/weixin_41832302/article/details/119921254