C语言,指针问题求解。

#include<iostream.h>voidmain(){intival=2048,a=256,*pi=&a;int&refVal=ival;int*&refPi=p... #include <iostream.h>
void main()
{
int ival = 2048, a = 256, *pi = &a;
int &refVal = ival;
int *&refPi = pi;
ival ++;
cout << "refVal = " << refVal << endl;
refVal = a;
cout << "ival = " << ival<< endl;
*refPi = 1024;
cout << "pi = " <<pi<< endl;
cout << "a = " <<a<< endl;
}

*refPi = 1024; //这里到底是赋值pi为1024还是指针*pi指向地址的值为1024,根据我的理解是直接赋值给引用的值:pi为1024呀,为什么输出的pi为地址
展开
 我来答
chiconysun
2012-01-13 · TA获得超过2.2万个赞
知道大有可为答主
回答量:5410
采纳率:92%
帮助的人:2468万
展开全部
C++ 中引用的概念就是一个变量的别名
int *&refPi = pi; 也就是说refPi是int * pi的引用,也就是说是整型指针pi的别名,那么使用refPi的地方和使用pi完全一致
因此*refPi = 1024;也就是*pi = 1024;
注意左边的反引用运算符*,当然是给pi所指向内容赋值1024,而不是给pi赋值1024
另外,C++ 环境下,给指针赋一个整数值一般有语法错误(虽然指针值是一个无符号长整数),除了0以外

至于cout << "pi = " <<pi<< endl;的意思就是输出指针的值(地址值)
追问
再顺便问一下
char pName[100];
pName = "I love China"; 编译错误,
————————————————————————————————
char pName[100] = "I love China; 这样就不会出错?
追答
char pName[100];
pName = "I love China"; 编译错误,
————————————————————————————————
char pName[100] = "I love China; 这样就不会出错?
前者的错误原因在于pName的类型为常量的char 指针,永远是pName[0]那个存储位置的地址值,而你的赋值语句就是要改变这个常量的值了,换一种方式说,就是C和C++ 中没有数组这个基本类型,因此也不能用赋值的方式来改变

后者只是数组在声明的同时初始化的写法,一定要注意,这不是赋值,只是表明在程序开始执行到这里的时候,给该数组分配的空间从起始地址开始依次初始化为各个字符
忘至白葬不情必0T
2012-01-13 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
int *&refPi = pi; 是定义了int*指针变量refPi,而且这个refPi是pi的引用,即refPi和pi已经成了同一个变量了,修改refPi的值,pi的值也会改变。
所以*refPi=1024,就是把pi指向地址的值改为1024。
cout<<pi当然是输出pi的值,pi是指针,它的值当然是地址。*pi的值才是1024。
C++只对字符串的输出进行了特殊处理,即cout输出字符串的指针的话,实际会输出字符串的值。但其它类型的数组不做这种处理。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
JNN494402043
2012-01-13 · 超过25用户采纳过TA的回答
知道答主
回答量:107
采纳率:0%
帮助的人:33.3万
展开全部
int *refPi = 1024;其实是int * refPi;和 refPi=1024;这两条语句的组合略写
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tianjiji900
2012-01-13
知道答主
回答量:22
采纳率:0%
帮助的人:14万
展开全部
pi是指向a的指针当然输出的是地址啊 *p才是1024
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ianynchen
2012-01-13 · TA获得超过117个赞
知道小有建树答主
回答量:161
采纳率:0%
帮助的人:111万
展开全部
指针的引用,前面加上*,那不就是pi指向的地址内的值吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hua880327
2012-01-16
知道答主
回答量:14
采纳率:100%
帮助的人:2.3万
展开全部
搞清楚一个简单概念
类型 *指针变量 = 变量
指针变量存放的永远是地址!!!
这句话的意思是将变量地址赋给指针变量!!!
而不是形式上将变量值赋给 *指针变量!!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式