| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 569 人关注过本帖
标题:数组与指针的问题
只看楼主 加入收藏
a1017075043
Rank: 2
来 自:广州
等 级:论坛游民
威 望:1
帖 子:50
专家分:63
注 册:2015-6-29
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:6 
数组与指针的问题
若有定义语句int a[2][3],*p[3];
p[0]=a;
为什么这里p[0]=a是错的?
我看书里说a是指向指针的指针,即int **
而p[0]是int *。
2015-10-13 16:44
A磊
Rank: 2
等 级:论坛游民
帖 子:7
专家分:17
注 册:2015-10-9
收藏
得分:0 
试试将 p[0]=a 改为 p[0]=&a[0][0]

见与不见——情都在那儿
2015-10-13 18:37
a1017075043
Rank: 2
来 自:广州
等 级:论坛游民
威 望:1
帖 子:50
专家分:63
注 册:2015-6-29
收藏
得分:0 
这个是对的,我解释不知道为什么
a是指向指针的指针,即int **
而p[0]是int *


我是小白。。。。
2015-10-13 19:27
TAAAAB
Rank: 7Rank: 7Rank: 7
来 自:湖南
等 级:黑侠
威 望:1
帖 子:243
专家分:635
注 册:2011-5-29
收藏
得分:0 
a看做是个数组名,是一个int类型数组的首地址

虽然a和*a的值一样,但是类型不一样
a的类型是int**
*a的类型是int*
**a的类型是int
p[0]的类型是int*

人有多懒,编程就有多难。
2015-10-13 22:10
Spy001
Rank: 9Rank: 9Rank: 9
来 自:山那边
等 级:贵宾
威 望:10
帖 子:138
专家分:1360
注 册:2015-1-23
收藏
得分:10 
回复 3楼 a1017075043
int a[2][3]是二级指针 ,*p[3]是一级指针
二维指针是指向指针的指针...
比方说int a[2][3];
那么 a就是一个指针,他的值指向a[0],即a[0]的内存地址.
a[0]也是一个指针,所以a是一个指向指针的指针.
a[0]的值指向a[0][0],即a[0][0]的地址.
如果将数组用指针访问的话:
a[i][j] = *(*(a+i)+j)
同理,多维数组的访问:
a[i][j]...[z]=*(*(...*(a+i)+j)...+z)

类型的区别:a的类型是int**;*a的类型是int*;**a的类型是int;p[0]的类型是int*

千百年之后,谁又还记得谁........
2015-10-13 22:46
kenierlee
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:58
专家分:474
注 册:2015-7-28
收藏
得分:0 
p[0] 类型为 int*
a 类型为 int(*)[3]

所以a不能赋值给p[0]。
举个栗子,如果一个int表示一节车厢,那int*表示指向一节车厢,而int(*)[3]表示指向3节车厢。
假设p[0]和a都指向第一节车厢,则p[0]+1指向第2节车厢,a+1指向第4节车厢。
2015-10-14 10:41
a1017075043
Rank: 2
来 自:广州
等 级:论坛游民
威 望:1
帖 子:50
专家分:63
注 册:2015-6-29
收藏
得分:0 
原来是这个样子的。明白了。

我是小白。。。。
2015-10-14 19:29
快速回复:数组与指针的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018136 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved