社区
C语言
帖子详情
指针 我还得问以下。。。
BJUTmark
2008-06-23 05:26:45
int a[3]={0,1,2};
int (*p)[3]=&a;
是不是这时候P就是一个表示含有3个int指针类型的数组的首地址?
...全文
264
17
打赏
收藏
指针 我还得问以下。。。
int a[3]={0,1,2}; int (*p)[3]=&a; 是不是这时候P就是一个表示含有3个int指针类型的数组的首地址?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hfgongheguo
2008-06-23
打赏
举报
回复
mark 下 , 加深一下理解
lwouyang
2008-06-23
打赏
举报
回复
上面很拗口,捡例子说吧。
对数组中第二个元素的引用方法:
a[1]
*(a+1)
(a+1)[0]
*(&a[0]+1)
(&a)[0][1]
*((&a)[0]+1)
*(&a+1)[0] ==> 错了!
p[0][1]
(*p)[1]
*p[1] ==> 错了!
*(p[0]+1)
*(*p+1)
*(*(p+1)) ==> 错了!
lwouyang
2008-06-23
打赏
举报
回复
1、a 是一个指针,其值是一个地址,也就是说 a 指向一个包含3个int类型的数组的首地址;
2、p 是一个指针,其值是 a,也就是说 p 指向 a;
因为 a 已经是指针,所以 p 是二级指针;
因为 a 指向一个包含3个int类型的数组的首地址( a[1] ==〉 1 ),
所以 p 是一个指向一个包含3个int类型的数组的首地址的指针的指针( p[0] ==〉 a, p[0][1] ==〉 1, p[1] ==〉错了!)。
{ 0, 1, 2}
↑
a
↑
p
Holinan
2008-06-23
打赏
举报
回复
[Quote=引用楼主 BJUTmark 的帖子:]
int a[3]={0,1,2};
int (*p)[3]=&a;
是不是这时候P就是一个表示含有3个int指针类型的数组的首地址?
[/Quote]
p是一个指针,他指向的内容是一个数组,这个数组里面存了3个整形数。
所以p其实就是指向了数组a的首地址
superIT3107
2008-06-23
打赏
举报
回复
[Quote=引用楼主 BJUTmark 的帖子:]
int a[3]={0,1,2};
int (*p)[3]=&a;
是不是这时候P就是一个表示含有3个int指针类型的数组的首地址?
[/Quote]
a已经是地址了
&又是地址的意思
那么&a就是地址的地址
所以int (*p)[3]=&a;就是3个int指针类型的数组的首地址
长安宁
2008-06-23
打赏
举报
回复
int *p[3];这个是一个有三个元素的数组,里面的每个元素都是 int *型;
而int (*p)[3];是一个指向三个元素数组的指针
所以 int (*p)[3]=&a[3]; 正好内在模型匹配,而数据名可以代表数组,所以简写成 int (*p)[3]=&a;
yyyapple
2008-06-23
打赏
举报
回复
[Quote=引用 3 楼 dennis101 的回复:]
错了。
3个int指针类型的数组,定义应是int *p[3];
int (*p)[3]中p是一个指向长度为3的int数组的指针。
前者是指向指针的数组,后者是指向数组的指针,请仔细体会。
[/Quote]
chenhj_wo
2008-06-23
打赏
举报
回复
问题没看懂
ww2734
2008-06-23
打赏
举报
回复
看似有些不妥,
int (*p)[3]=&a;
前面是二级的,后面是一级的……
ww2734
2008-06-23
打赏
举报
回复
看似有些不妥,
int (*p)[3]=&a;
前面是二级的,后面是一级的……
星空Neo
2008-06-23
打赏
举报
回复
p[0][0]=0
p[0][1]=1
p[0][2]=2
K行天下
2008-06-23
打赏
举报
回复
楼主说的有错误:
int a[3]={0,1,2};
int (*p)[3]=&a;
是不是这时候P就是一个表示含有3个int指针类型的数组的首地址?
应该是表示一个指向 含有3个int整型的数组的 指针
你的理解是 int* p[3];这是一个数组,每一个成员都是int*这个类型!
q06380925
2008-06-23
打赏
举报
回复
[Quote=引用 3 楼 dennis101 的回复:]
错了。
3个int指针类型的数组,定义应是int *p[3];
int (*p)[3]中p是一个指向长度为3的int数组的指针。
前者是指向指针的数组,后者是指向数组的指针,请仔细体会。
[/Quote]
楼上正解
day572
2008-06-23
打赏
举报
回复
如下就是这样
typedef int a[3];
a *p;
p就是这样意思.
dennis101
2008-06-23
打赏
举报
回复
错了。
3个int指针类型的数组,定义应是int *p[3];
int (*p)[3]中p是一个指向长度为3的int数组的指针。
前者是指向指针的数组,后者是指向数组的指针,请仔细体会。
maomingxu13
2008-06-23
打赏
举报
回复
对呀,把指针数组p指向了数组a的起始地址,所以p就是原来的a了!
ForestDB
2008-06-23
打赏
举报
回复
yeeeeeees.
指针
,
指针
,
指针
。。。
1、
指针
常量与常量
指针
int a = 10; int * const p1 = &a; const int * p2 = &a; p1是不可改变地址的常量,即
指针
常量,但可以对它所指向的内容进行修改。 p2是指向常量的
指针
,即常量
指针
,它所指向的地址内容是不可修改的,但其本身确实可以修改的。 2、
指针
运算 #include int main() { int
《编程千
问
》:第十七
问
:什么是函数
指针
?什么是
指针
函数?
在C/C++编程中,函数
指针
和
指针
函数是两个重要的概念,它们在程序设计中有着广泛的应用。函数
指针
是指向函数的
指针
变量。它可以存储函数的地址,从而可以通过该
指针
调用函数。
指针
函数是返回
指针
的函数。它的返回值是一个
指针
类型,可以指向某种数据类型。概念定义常见应用底层原理函数
指针
指向函数的
指针
回调函数、事件处理、动态调用存储函数地址,调用时跳转到该地址
指针
函数返回
指针
的函数动态内存分配、数据结构操作返回地址,允许访
问
或修改数据。
结构体
指针
,结构体成员有
指针
。。。
结构体
指针
,结构体成员是
指针
,结构体
指针
分配内存,赋值,释放,结构体成员
指针
分配内存,赋值,释放。。。
指针
。。。
什么是
指针
: 数据类型 定义
指针
变量 整型 代表内存的编号(地址) 为什么使用
指针
: 1、函数之间需要共享变量(额外输出结果) 2、提高函数之间的传参效率,
指针
的字节数永远是4|8字节 3、使用堆内存时,堆内存无法取名字 如何使用
指针
: 定义:类型* 变量名_p; 变量名以p结尾以示区别 类型决定了能够访
问
多少个字节 一个*不能连续定义多个
指针
变量 默认值是随机的 ...
C
指针
。。。
在这里,type 是
指针
的基类型,它必须是一个有效的 C 数据类型,var_name 是
指针
变量的名称。在大多数的操作系统上,程序不允许访
问
地址为 0 的内存,因为该内存是操作系统保留的。所有实际数据类型,不管是整型、浮点型、字符型,还是其他的数据类型,对应
指针
的值的类型都是一样的,都是一个代表内存地址的长的十六进制数。每一个变量都有一个内存位置,每一个内存位置都定义了可使用 & 运算符访
问
的地址,它表示了在内存中的一个地址。不同数据类型的
指针
之间唯一的不同是,
指针
所指向的变量或常量的数据类型不同。
C语言
70,038
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章