您的位置:首页 > 编程语言 > C语言/C++

C语言重新学习――数组与指针的关系

2013-06-14 14:43 344 查看
1、一维数组与指针数组声明为int a[10];其中a被称为数组标识,可以看作是整个数组的指针,其指向的是数组的开头,如图所示。其中*numbers指向的是numbers[0],其中输入第一个数numbers[0]可以直接使用scanf("%d", numbers);不需使用&符号。

数组与指针的关系:*numbers=numbers[0]; *(numbers+n)=number
; numbers+n = &(numbers
);数组赋值如果小于长度,则数值型补0,字符型补'',字符串型补"\0",大于的话会报编译错误。

2、多维数组与指针二维数组与指针的对应关系为a
[m]=*(*(a+n)+m)多维数组对应关系:

多维数组赋初值规律:从最底层开始,除了最大的括号外,每遇一个‘{’则下一级,每遇一个‘,’右移一级,遇'}'则未赋值的略去。例: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: