C语言学习之路之数组的一些浅见
2018-03-08 21:56
274 查看
第一次写博客文章,有什么不对的地方,请勿见怪.
对函数传递数据的一些体会.当我们定义一个函数的时候,当参数传递的是数组的时候我们初学者一般会这样定义:
如写一个数组遍历打印时会这么写:
void print(int a[10],int length)
{
int i=0;
for(i=0;i<length;i++)
{
printf("%d ",a[i]);
}
}
int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
print(a,10);
return 0;
}
然而,当我们对数组有了更深一层的理解之后,即数组可以用指针来表示:
void print(int *a,int length)
{
int i=0;
for(i=0;i<length;i++)
{
printf("%d ",a[i]);
}
}
int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
print(a,10);
return 0;
}
那么,对数组在内存中的存储方式又是怎么样的呢?对此,我又学到了这样一种方式:
int main()
{
int a[10];
printf("a:%d a+1:%d &a:%d &a+1:%d \n",a,a+1,&a,&a+1);
return 0;
}
运行结果:
a:1505832 a+1:1505836 &a:1505832 &a+1:1505872
对运行结果进行一些个人见解:
为什么a和&a的值会一样?而 a+1 和 &a+1 的是不一样?
我的理解是:a 表示的是数组元素中第一个元素的地址,而 &a 则表示的是整个数组a[10]的地址.
a+1 表示数组元素第二个元素的地址,而 &a+1 则是在数组a[10]的地址之后再 "+1"
以上是一个C语言初学者在数组方面的一些浅见,如果有什么写的不对的地方,请各位大牛留言.以后想到什么还会修改.
对函数传递数据的一些体会.当我们定义一个函数的时候,当参数传递的是数组的时候我们初学者一般会这样定义:
如写一个数组遍历打印时会这么写:
void print(int a[10],int length)
{
int i=0;
for(i=0;i<length;i++)
{
printf("%d ",a[i]);
}
}
int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
print(a,10);
return 0;
}
然而,当我们对数组有了更深一层的理解之后,即数组可以用指针来表示:
void print(int *a,int length)
{
int i=0;
for(i=0;i<length;i++)
{
printf("%d ",a[i]);
}
}
int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
print(a,10);
return 0;
}
那么,对数组在内存中的存储方式又是怎么样的呢?对此,我又学到了这样一种方式:
int main()
{
int a[10];
printf("a:%d a+1:%d &a:%d &a+1:%d \n",a,a+1,&a,&a+1);
return 0;
}
运行结果:
a:1505832 a+1:1505836 &a:1505832 &a+1:1505872
对运行结果进行一些个人见解:
为什么a和&a的值会一样?而 a+1 和 &a+1 的是不一样?
我的理解是:a 表示的是数组元素中第一个元素的地址,而 &a 则表示的是整个数组a[10]的地址.
a+1 表示数组元素第二个元素的地址,而 &a+1 则是在数组a[10]的地址之后再 "+1"
以上是一个C语言初学者在数组方面的一些浅见,如果有什么写的不对的地方,请各位大牛留言.以后想到什么还会修改.
相关文章推荐
- 学习c语言遇到的一些问题(4)(Linux)(不确定大小的数组)
- PHP程序员的C学习之路2 - 第一章, C语言的一些基础
- 一个初学者的C语言学习之路——关于原反补码的一些认识
- 【学习ios之路:C语言】一维数组,数组排序,字符数组
- 【学习ios之路:C语言】② 二维.三维数组.字符串数组的应用
- 【学习ios之路:C语言】二维.三维数组.字符串数组的应用
- 【黑马程序员】iOS学习之路——C语言之函数和数组
- C语言之数组冒泡排序方法(学习之路)
- 【学习ios之路:C语言】数组.循环.语句总和运用试题练习
- Linux 下C语言的学习(五)——指针的学习(数组指针,指针数组,数组退化)
- 学习数据结构中一些C语言问题集锦2
- C语言 ---- 数组 iOS学习-----细碎知识点总结
- scala学习之路:5.懒加载以及数组的操作
- 学习C语言的数组
- c语言学习,指针函数、函数指针、指针的指针、指向指针数组的指针
- 【小白笔记】PHP学习之路 (14) --数组(4)
- 黑马程序员-----C语言学习之数组与指针
- 【小白笔记】PHP学习之路 (19) --数组增改排序
- C语言学习之指针和数组
- [C语言]菜鸟的一些理解-数组1