C语言数组是C语言的基础知识,这里总结了数组的知识,希望对大家学习C语言有帮助。
数组:C语言中数组 声明
例:int numB[2] = {1,3};
int numB[] = {1,3};
以上两种声明方式都可以声明数组
int numC[];
numC = {1,2,3};
以上是错误的声明方式
C语言中数组名就是数组的内存地址
C语言中的数组的赋值需要用{},OC中用[],如果数组部分初始化 int numF[5] = {1,3};
没有被初始化的元素那么系统会自动将其初始化为0
可以通过[索引] = 的方式,给指定索引的元素赋值。
int numA[101] = {[99]=1,[100]=3};
printf("numA[99] = %i\\n",numA[99]);
printf("numA[100] = %i\\n",numA[100]);
数组遍历:
int numD[4] = {1,2,3,4};
//动态计算数组元素的个数
int length = sizeof(numD)/sizeof(numD[0]); //sizeof代表计算对象所占的字节数
for (int i = 0; i<length; i++) {
printf("numD[%i] = %i\\n",i,numD[i]);
}
数组在内存中的存储细节
数组在内存中存储是 一 低位至高位存储,变量则在内存中存储则是 — 高位至低位存储
char charValues[4] = {'a','b','c','d'};
printf("charValues[0] = %p\\n",&charValues[0]);
printf("charValues[1] = %p\\n",&charValues[1]);
printf("charValues[2] = %p\\n",&charValues[2]);
printf("charValues[3] = %p\\n",&charValues[3]);
printf("charValues = %p\\n",&charValues);
数组作为形参,数组里面的元素可以省略,注意:基本数据类型作为函数的参数是值传递,如果形参是基本数据类型,在函数中改变形参的值不会影响到实参的值。如果形参是数组,那么在函数中修改形参的值,会影响到实参的值。【函数传递基本数据类型,不会修改实参的值,函数传递数组,会影响实参的值】
当数组作为形参,会自动转成指针,在函数中永远无法算出元素个数
函数传递数组:
void change2(int values[2])
{
values[1]= 99;
}
int main(int argc, const char * argv[]) {
int nums[2]= {1,5};
change2(nums);
printf("num[1] = %i\\n",nums[1]);
return 0;
}
函数传递基本数据类型:
void change(int value)
{
value = 55;
}
int main(int argc, const char * argv[]) {
int nums[2]= {1,5};
change(nums[0]);
printf("num[1] = %i\\n",nums[0]);
return 0;
原文来自:博客园/偷吃的喵