c++语言的简单问题

1.int*p1intap1=ap1=&a*p1=a这三种表达方式都代表了什么,有什么不同inta[2][3]={1,2,3,4,5,6};int(*p1)[4];p1=... 1.
int *p1
int a
p1=a
p1=&a
*p1=a
这三种表达方式都代表了什么,有什么不同
int a[2][3]={1,2,3,4,5,6};
int (*p1)[4];
p1=a;
这里面的p1=a是什么意思
展开
 我来答
a50855662
2007-12-31
知道答主
回答量:12
采纳率:0%
帮助的人:10.7万
展开全部
1.声明一个INT型的指针变量
2.声明一个INT型的变量A
3.将A赋给P1变量(两种标量类型要一样,不然编译报错)
4.把变量A的存储地址赋给指针P1(多说一句,&这个符号在C++中还有引用的意思)
5.将A的值赋给指针P1所指向的变量.
这个知识点算是C++的一个难点,指针可以想像成是汽车中油表中的游标,只是这里是存储器.
&操作符是获取变量地址的作用,指针变量用于存放地址!
同时还应注意指针也是变量,所以指针也有内存地址.(即指向指针的指针)
对于你补充的问题,INT A[2][3]是个数组,对于数组而言,数组名就是数组第一个元素的地址,即对于:a等于&a[0] 下面我给一部分表达式来帮助理解
int a[100];
int* p1=a;
如果我们有第i个元素: a[i]等价于*(a+i)等价于p1[i]等价于*(p1+i) a[i]表示第I个元素的值,而a+i表示第I个元素的地址.所以p1=a表示数组A的第一个元素地址,这里是指针变量的赋值.
写了这么多,采纳为最佳吧~~没有复制!!!

参考资料: C++程序设计教程(清华大学出版社)

百度网友34adba635
2007-12-31 · TA获得超过367个赞
知道小有建树答主
回答量:296
采纳率:0%
帮助的人:306万
展开全部
1.声明一个指针变量,它将指向int类型的变量
2.声明一个int类型的变量
3.将a的值赋给p1,如果接着前2个句子的话,那么这句话会出错
4.将a的地址赋给p1,同上,这是正确的。
5.将a的值赋给p1所指向的变量,同上,这句话是错的。

对于你的补充问题,如果你知道基于数组的运算除了sizeof()之外,编译器总会把它们转化成指针来运算就好理解了。
int (*p)a[4],声明p是一个指向int型数组的指针变量,该数组有4个元素。之所以不能理解成:p是一个指针数组,该数组有4个指针,每个均指向一个int型变量,是因为*的优先级低于[],所以带了括号。
因为数组名总代表着该数组的首地址,所以p1=a是正确的:将数组的首地址赋给p1,也即是p1指向该数组。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Iradio_
2007-12-30 · TA获得超过177个赞
知道小有建树答主
回答量:156
采纳率:0%
帮助的人:124万
展开全部
int*p1 代表定义一个整行的指针 P1
int a 代表定义一个变量a
p1=a 代表把a的值赋给p1
p1=&a 说明下&a是一个地址预算 代表把a地址里的值赋给p1
*p1=a 说明下*p1是一个地址运算 代表把a的值赋给
*p1所指向的变量
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pujia12345
2007-12-30 · TA获得超过3680个赞
知道大有可为答主
回答量:3456
采纳率:0%
帮助的人:2936万
展开全部
p1=a 意义上是错误的,指针变量不能指向一个常数
p1=&a p1指向变量a的地址,以后*p就代表a了,p1就代表&a了
*p1=a 把a的值赋给p1地址的值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
针慧6211
2007-12-31 · TA获得超过104个赞
知道答主
回答量:27
采纳率:0%
帮助的人:0
展开全部
简单的来说 'P1'是一个指针,而'a'是一个数组,P1=a;就是P1这个指针指向a这个数组的首元素 即:&a[0]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式