数组与指针

水滴石穿,非一日之功

代码如下

#include <stdio.h>
int getSize(int array[]){
    return sizeof(array);
}
int main(int argc, char const *argv[])
{
    int arr1[] = {1,2,3,4,5};
    int size1 = sizeof(arr1);

    int* pointer = arr1;
    int size2 = sizeof(pointer);
    int size3 = getSize(arr1);
    printf("%d, %d, %d \n",size1,size2,size3);
    return 0;
}

输出为20,8,8
分析:

  1. arr1是一个数组,sizeof求的是数组arr1的大小。整型变量的大小为4字节,所以含有五个元素的数组的大小为20字节。
  2. 整型指针pointer指向数组的第一个数字,64位系统中指针的大小始终为8字节。
  3. 数组作为函数的参数传递时,数组自动退化成为同类型的指针。所以getSize函数中的sizeof返回的数值为指针的大小,而不是数组的大小。


    编译警告.jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容