<转自百度知道> 1.c语言中,定义数组后可以用sizeof命令获得数组的长度(可容纳元素个数). 例如: int data[4]; int length; length=sizeof(data)/sizeof(data[0]); //数组占内存总空间,除以单个元素占内存空间大小 printf("length of data[4]=%d", length ); //输出length of data[4]=4 2.但是,通过传递数组名参数到子函数中,以获得数组长度是不可行的
// 这是一篇导入进来的旧博客,可能有时效性问题. 程序中,当我们建立了一个int型数组:int a[]={1,2,3,4,5,6};随后我们可能需要知道它的长度,此时可以用这种方法:length = sizeof(a)/sizeof(a[0]);这种方法很实用,但是能不能用一个自定义函数接收一个数组作为参数,求其长度呢?直觉上,我们可能会写出这样的程序: #include<stdio.h> int len(int a[]) { int len = sizeof(a)/sizeof(a[0])
C语言里,所有变量空间都是在程序运行之初向系统申请的,包括指针,除了一些动态申请方式如malloc函数.没有申请的空间系统是不允许读写的.那么如果一个数组大小是变量定义,则在程序运行前不能确定数组大小,也就无法申请,故不允许.所以,解决的办法便是通过malloc函数,即 int a[n]; 可改为 int* const a = (int*)malloc(sizeof(int)n); 这样a变量就完全可以当作一个数组直接使用了,包括a[1]之类的.因为"[]"中括号运算符做的只是偏移其内
数组声明的格式是: var identifier [len]type 例如: var arr1 [5]int 在内存中的结构是: 对索引项为 i 的数组元素赋值可以这么操作:arr[i] = value,所以数组是 可变的. 由于索引的存在,遍历数组的方法自然就是使用 for 结构: IDIOM: for i:=0; i < len(arr1); i++{ arr1[i] = ... } 也可以使用 for-range 的生成方式: IDIOM: for i,_:= range arr1 { .