一维数组和二维数组中的头指针
来源:互联网 发布:宝元数控车床编程手册 编辑:程序博客网 时间:2024/05/18 01:37
今天早上起来没事看看单片机的书,发现一个问题,这也是我以前学习C的时候没想明白的,但是当时也没仔细去想,一直以来都很混淆。今天总算是明白了。代码如下:
int main()
{
int a[3][4]; //定义一个二维数组
//int a[3]; //定义一个一维数组,这里屏蔽了
int *p,k=0;
int i,j;
p=a[0]; //如果用 p=a,会报错。
// p= a; //是适用于一维数组
// p= a[0]; // 要是在一维数组中使用也是错误的,应该修改成 prt = &a[0];此时 a[0]是int的数据了。
for(i=0; i<3; i++)
for(j=0; j<4; j++)
a[i][j]=k++;
printf("%d---------------%d/n",a[0],(a[0]+1) ); //在二维数组中 a[0]表示 数组的的首地址,而且是以最小元素为单位
printf("%d---------------%d",a,a+1); //而a 表示 数组的首地址,但是是以一维数组为单位。a+1表示a[1]
return 0;
}
虽然a[0]、a都是数组首地址,但二者指向的对象不同,a[0]是一维数组的名字,它指向的是a[0]数组的首元素,对其进行“*”运算,得到的是一个数组元素值,即a[0]数组首元素值,因此,*a[0]与a[0][0]是同一个值;而a是一个二维数组的名字,它指向的是它所属元素的首元素,它的每一个元素都是一个行数组,因此,它的指针移动单位是“行”,所以a+i指向的是第i个行数组,即指向a[i]。对a进行“*”运算,得到的是一维数组a[0]的首地址,即*a与a[0]是同一个值。当用int *p;定义指针p时,p的指向是一个int型数据,而不是一个地址,因此,用a[0]对p赋值是正确的,而用a对p赋值是错误的
看来在一位数组和二维数组中 a,a[0]的意义还是不一样的啊。。
但是为什么在一维数组中打印a[0]出现的不是他的地址呢? 呵呵。。还没想明白
- 一维数组和二维数组中的头指针
- 一维指针和数组,二维指针和数组
- 二维数组指针和一维数组指针的区别
- 关于二维数组和一维指针数组的区别
- c++用指针遍历一维数组和二维数组
- 数组指针操作一维二维数组
- Java中的一维数组和二维数组
- 二维数组,指针数组和数组指针
- 数组指针,指针数组和二维数组
- C++中的二维数组和指针
- 一维数组和二维数组的数组和指针调用方法
- 二维数组和数组指针
- 二维数组和指针数组
- 二维数组和指针
- 二维数组和指针
- 二维数组和指针
- 指针和二维数组
- 二维数组和指针
- 为“得”而“舍”
- 杂记 嵌入式下手写板的开发_基于2440 & HW006
- 一次软件工程作业:关于C与C++中互相调用动态链接库的问题
- 定制自己的Windows CE 5.0 ARM中文模拟器
- 世事难两全
- 一维数组和二维数组中的头指针
- 【转】arm启动过程点滴
- 无法识别的元素“extendedProtectionPolicy”。
- Java Web基础:第六讲 JSP运行原理
- 字符串分隔splie作用于“|”时注意
- textarea存入数据库再显示的问题
- a page a day 3
- SQL2005 安装时 “性能监视器计数器要求(错误)” 解决方案
- 最近