关于二维数组地址和指针之间的赋值
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在开发工业以太网项目的时候经常遇到一些小细节问题,在建立数据报进行传输的过程中传递txbuf缓冲区的地址的时候就遇到类似下面的问题。
一.简单说明1
定义一个2X3的int型的二维数组int array[2][3];并且给这个二维数组赋值1,2,3,4,5,6;array[0][0]=1
array[0][1]=2
array[0][2]=3
array[1][0]=4
array[1][1]=5
array[1][2]=6
输出结果
1 2 3
4 5 6
array[0]表示第一行的首地址,也就是第一行第一个数的地址,也就是&array[0][0] So array[0]==&array[0][0];其实&array[0]还==array[0]==&array[0][0],都表示第一行的首地址。
array[1]是第二行的首地址,也就是第二行第一个数的地址,也就是&array[1][0]
so array[1]=&array[1][0];试试&array[1]还==array[1]==&array[1][0]
定义一个指针变量int *p;将第一行的首地址赋给p有3种方式。
1. p=array[0];
2. p=&array[0];
3. p=&array[0][0];
p[0]就等同于array[0][0],也就是p[0]==1;(为了形象记忆,可以用替换的角度去记忆和理解。因为之前说过p=array[0], so,
p[0]就把p换成array[0]再加上[0]就是arary[0][0])
p[1]等于array[0][1]等于2
p[2]等于array[0][2]等于3
同理,将第二行的首地址赋给p也有三种方式:
3. p=array[1];
4. p=&array[1];
5. p=&array[1][0];
p[0]等于array[1][0]等于4
p[1]等于array[1][1]等于5
p[2]等于array[1][2]等于6