剑指offer习题

数组与指针

2018-02-26  本文已影响0人  李2牛

水滴石穿,非一日之功

代码如下

#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
上一篇 下一篇

猜你喜欢

热点阅读