C语言获取数组长度

c语言提供三种定义数组的方式:
第一种:

int arr[5]={1,2,3,4,5};

第二种:
int arr[5];
arr[0]=1;
arr[1]=2;
....

arr[4]=5;

第三种:
int arr[]={1,2,3,4,5,6};

其中第一种第二种已经显示的给出了数组长度,第三种写法怎么知道数组长度?

另外声明数组的类型的时候为什么是int
int arr[5];

阅读 13.3k
5 个回答

看多点书吧,像这种int arr[]={1,2,3,4,5,6};是初始化数组会自动分配内存的,比较推荐这种写法。
楼上已提出求解数组长度做法:sizeof(arr) / sizeof(arr[0]),但这种一般是在主函数里面才能求,如果arr作为参数传递给子函数的话,数组名将会转换成指针形式传递,因此这种求解就有错误了。

只能说一下长度问题:
可以这样求 (int) (sizeof(a) / sizeof(a[0]));

声明数组的类型的时候为什么是int arr[5];

因为c的语法就这样规定的.. c有很多这种用 "和使用时相似的" 语法定义的类型. 比如

// "*pa是int", 那么pa是指向int的指针
int *pa; 

// "arr[int]是long", 那么arr是long数组
long arr[int];

是不是学js,py这种语言学多了。。。。。

int a[5]=={1,2,3,4,5};
int a[]={1,2,3,4,5};

两种写法都可以,至于后者的写法怎么知道数组长度?这c/c++会自动根据 { } 内元素个数得到这个长度,记住就行了,没什么好说的这个。

根据初始化时参数个数分配的。声明int arr[5],表示这是一个包含了5个int值的数组,这种问题去看书,别出来问,浪费时间

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进