推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

C语言指针与数组的本质区别.docx

更新时间:2026-10-10 20:25:00 大小:39K 上传用户:潇潇江南查看TA发布的资源 标签:C语言指针数组sizeof内存管理 下载积分:2分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

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

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载