- 1
- 2
- 3
- 4
- 5
C语言指针与数组的本质区别.docx
资料介绍
C语言指针与数组的本质区别
一、一个困扰很久的问题
刚学C语言的时候,指针和数组常常被混为一谈。很多人会说"数组就是指针",这句话其实只对了一半。虽然数组名在大多数表达式中会退化为指向首元素的指针,但数组和指针在本质上是完全不同的两种东西。
数组是一块连续分配的内存,它的地址和大小在编译期就确定了,整个生命周期内不可改变。指针则是一个变量,它存储的是一个地址值,可以指向任意位置,也可以被重新赋值。搞清楚这一点,很多C语言中的疑难问题都能迎刃而解。
二、sizeof操作符带来的差异
最能说明数组和指针区别的操作就是 sizeof。
int arr[10];
int *ptr = arr;
printf("sizeof(arr) = %zu\n", sizeof(arr)); // 输出 40(10 × 4字节)
printf("sizeof(ptr) = %zu\n", sizeof(ptr)); // 输出 8(指针大小,64位系统)
sizeof(arr) 返回的是整个数组占用的内存字节数,而 sizeof(ptr) 只返回指针本身的大小。这说明编译器在底层对数组和指针的处理方式完全不同。
有个常见的陷阱是:当数组作为函数参数传递时,它会被退化为指针。在函数内部再对参数使用 sizeof,得到的就是指针的大小而不是数组的大小。这就是为什么需要在函数签名中显式传入数组长度。
部分文件列表
| 文件名 | 大小 |
| C语言指针与数组的本质区别.docx | 39K |
最新上传
-
yahuang001 打赏3.00元 3天前
-
yahuang001 打赏1.00元 3天前
-
zhongshaoxiong 打赏3.00元 3天前
-
他山之石可攻玉 打赏60.00元 3天前
用户:烟雨
-
江岚 打赏210.00元 3天前
用户:潇潇江南
-
江岚 打赏100.00元 3天前
-
21ic下载 打赏310.00元 3天前
用户:gsy幸运
-
21ic下载 打赏310.00元 3天前
用户:zhengdai
-
21ic下载 打赏310.00元 3天前
用户:江岚
-
21ic下载 打赏210.00元 3天前
用户:潇潇江南
-
21ic下载 打赏60.00元 3天前
用户:他山之石可攻玉
-
21ic下载 打赏60.00元 3天前
用户:烟雨
-
21ic下载 打赏60.00元 3天前
用户:w178191520
-
21ic下载 打赏60.00元 3天前
用户:w993263495
-
21ic下载 打赏110.00元 3天前
用户:xzxbybd
-
21ic下载 打赏60.00元 3天前
用户:zq_1943
-
21ic下载 打赏20.00元 3天前
用户:kk1957135547
-
21ic下载 打赏20.00元 3天前
用户:sun2152
-
21ic下载 打赏20.00元 3天前
用户:铁蛋锅
-
21ic下载 打赏20.00元 3天前
用户:xuzhen1
-
21ic下载 打赏20.00元 3天前
用户:w1966891335
-
21ic下载 打赏35.00元 3天前
用户:有理想666
-
21ic下载 打赏15.00元 3天前
用户:nuaanuaa111
-
21ic下载 打赏20.00元 3天前
用户:liqiang9090
-
21ic下载 打赏15.00元 3天前
用户:ningmengge
-
21ic下载 打赏10.00元 3天前
用户:mulanhk
-
21ic下载 打赏5.00元 3天前
用户:asys
-
21ic下载 打赏10.00元 3天前
用户:舞蹈荀彧
-
21ic小能手 打赏5.00元 3天前
资料:磁编码器开源方案
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
江岚 打赏20.00元 3天前
-
江岚 打赏50.00元 3天前
-
江岚 打赏20.00元 3天前
-
江岚 打赏10.00元 3天前
-
21ic小能手 打赏10.00元 3天前
-
21ic小能手 打赏8.00元 3天前
-
21ic小能手 打赏8.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏3.00元 3天前




全部评论(0)