如何理解C语言数组
2016-08-04 19:49
399 查看
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;
原文来自:博客园/偷吃的喵
数组: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;
原文来自:博客园/偷吃的喵
相关文章推荐
- C语言应用于LR中-如何得到数组长度
- C语言中如何求任意一个int型数组的长度?
- 深入理解C语言中的指针与数组之指针篇
- C语言编程经验总结1 --- 如何让数组的定义更具扩展型
- [转]如何理解C语言中的复杂声明
- C语言中如何求任意一个int型数组的长度
- C语言中sizeof计算数组如何实现?
- 【笔试面试知识点查缺补漏深入理解之C与C++篇】C语言中的指针数组与数组指针
- C语言 数组与指针的理解
- C语言如何动态申请数组(From:百度百科)
- C语言中如何不用STRLEN检测数组长度
- 深入理解C语言特性-指针 数组 声明
- C语言中动态分配数组指针后如何释放
- 深入理解C语言中的指针与数组之指针篇
- 【原创】C语言中如何用长度变量定义数组
- C语言应用于LR中-如何得到数组长度(原创)
- C语言 数组与指针的理解
- 如何理解数组作为函数参数时,数组名就是指针?
- 如何理解数组的length?
- 如何理解不能用字符串给字符数组赋值