C语言重新学习――数组与指针的关系
2013-06-14 14:43
344 查看
1、一维数组与指针数组声明为int a[10];其中a被称为数组标识,可以看作是整个数组的指针,其指向的是数组的开头,如图所示。其中*numbers指向的是numbers[0],其中输入第一个数numbers[0]可以直接使用scanf("%d", numbers);不需使用&符号。
![](http://img1.51cto.com/attachment/201306/144237602.png)
数组与指针的关系:*numbers=numbers[0]; *(numbers+n)=number
; numbers+n = &(numbers
);数组赋值如果小于长度,则数值型补0,字符型补'',字符串型补"\0",大于的话会报编译错误。
2、多维数组与指针二维数组与指针的对应关系为a
[m]=*(*(a+n)+m)多维数组对应关系:
![](http://img1.51cto.com/attachment/201306/144246654.png)
多维数组赋初值规律:从最底层开始,除了最大的括号外,每遇一个‘{’则下一级,每遇一个‘,’右移一级,遇'}'则未赋值的略去。例:int a[3][3][3]={{{1,2,3,4},1,2,3},{5,6,7,8}};先为最大的括号,略去,然后遇到两个大括号,则从a[0][0]开始赋值赋值4个,即a[0][0][0]=1,a[0][0][1]=2,a[0][0][2]=3,a[0][1][0]=4,此时舍去a[0][1],从a[0][2]开始赋值,即a[0][2][0]=1,a[0][2][1]=2,a[0][2][2]=3。然后赋值a[1],赋值4个a[1][0][0]=5,a[1][0][1]=6,a[1][0][2]=7,a[1][1][0]=8,剩下的为0,这样赋值就完成了。
3、sizeof与数组和指针sizeof是计算某个符号所占字节数的关键字,计算主要以malloc分配的空间为主,单纯的变量与其指针的大小是一样的,但数组却随着指针层数的不同而发生变化。N维数组a[n1][n2]...[nn]的sizeof为n1*n2*...*nn*sizeof(a[0][0]...[0](n个))=n1*n2*...*nn-1*sizeof(a[0][0]...[0](n-1个))=...=n1*sizeof(a[0])=sizeof(a)=n1*sizeof(*a)=n1*n2*sizeof(**a)=...=n1*n2*...*nn*(**..*a);
本文出自 “lansert嵌入式之旅” 博客,请务必保留此出处http://lansert.blog.51cto.com/2939273/1221887
![](http://img1.51cto.com/attachment/201306/144237602.png)
数组与指针的关系:*numbers=numbers[0]; *(numbers+n)=number
; numbers+n = &(numbers
);数组赋值如果小于长度,则数值型补0,字符型补'',字符串型补"\0",大于的话会报编译错误。
2、多维数组与指针二维数组与指针的对应关系为a
[m]=*(*(a+n)+m)多维数组对应关系:
![](http://img1.51cto.com/attachment/201306/144246654.png)
多维数组赋初值规律:从最底层开始,除了最大的括号外,每遇一个‘{’则下一级,每遇一个‘,’右移一级,遇'}'则未赋值的略去。例:int a[3][3][3]={{{1,2,3,4},1,2,3},{5,6,7,8}};先为最大的括号,略去,然后遇到两个大括号,则从a[0][0]开始赋值赋值4个,即a[0][0][0]=1,a[0][0][1]=2,a[0][0][2]=3,a[0][1][0]=4,此时舍去a[0][1],从a[0][2]开始赋值,即a[0][2][0]=1,a[0][2][1]=2,a[0][2][2]=3。然后赋值a[1],赋值4个a[1][0][0]=5,a[1][0][1]=6,a[1][0][2]=7,a[1][1][0]=8,剩下的为0,这样赋值就完成了。
3、sizeof与数组和指针sizeof是计算某个符号所占字节数的关键字,计算主要以malloc分配的空间为主,单纯的变量与其指针的大小是一样的,但数组却随着指针层数的不同而发生变化。N维数组a[n1][n2]...[nn]的sizeof为n1*n2*...*nn*sizeof(a[0][0]...[0](n个))=n1*n2*...*nn-1*sizeof(a[0][0]...[0](n-1个))=...=n1*sizeof(a[0])=sizeof(a)=n1*sizeof(*a)=n1*n2*sizeof(**a)=...=n1*n2*...*nn*(**..*a);
本文出自 “lansert嵌入式之旅” 博客,请务必保留此出处http://lansert.blog.51cto.com/2939273/1221887
相关文章推荐
- C语言学习历程(八)数组和指针的关系及几个程序
- C语言学习,将一个数组中的值按逆序重新存放,例如原来顺序为8,6,5,4,1 。要求改为1, 45,8
- C语言学习笔记17——数组与指针
- 黑马程序员——C语言学习之数组——字符串——指针
- C语言的数组及指针学习
- C语言学习笔记22——数组参数和指针参数
- c语言—指针基础(3:指针和数组的关系)
- c语言学习,指针函数、函数指针、指针的指针、指向指针数组的指针
- C语言学习之指针和数组
- 【C语言学习】《C Primer Plus》第10章 数组和指针
- 理解C语言指针和数组的关系的代码
- C语言学习之 数组,指针,字符串. (二)
- C语言学习笔记21——多维数组和多维指针
- C语言学习之指针和数组
- ios开发-c语言之指针和数组以及指针和字符串的学习
- c语言的申明,指针和数组的学习总结
- c语言学习之数组指针
- 黑马程序员-C语言数组与指针学习心得
- C语言中数组名和指针的关系
- 数组和指针————C语言学习笔记1