为了账号安全,请及时绑定邮箱和手机立即绑定

c指针不懂啊

c指针不懂啊

C C++
beyourpersonalbest 2016-02-22 16:45:10
*pi=&i;什么意思 求详细解释pi=&i;我知道啥意思,*pi=&i这样写真的对吗?
查看完整描述

2 回答

已采纳
?
MadMarical

TA贡献79条经验 获得超122个赞

你好。*p = &i 是错误的写法。

此处的&符号是取地址符,而*p为p这块内存地址里的值。所以在编译器中,*pi = &i是错误的。

示例程序如下:

#include <iostream>

using namespace std;

int main()
{
    int data = 100;
    int *p;

    p = &data;
    
    cout<<"p is:"<<p<<endl;
    cout<<"*p is:"<<*p<<endl;
    cout<<"data is:"<<data<<endl;
    cout<<"&data is:"<<&data<<endl;
    return 0;
}

结果为:

p is:0x7fff5fbff778

*p is:100

data is:100

&data is:0x7fff5fbff778

由上述结果可以看出,&为取地址符,指针*p中的p保存的是内存地址。使用解引用符号*能得到p内存地址中保存的值。


查看完整回答
2 反对 回复 2016-02-22
?
血多多

TA贡献1条经验 获得超0个赞

没问题,看情况。

①如果pi是一维指针,那么初始化时定义:xx i; xx *pi=&i;(注意顺序,xx 为数据类型) 这是完全OK的。

②如果不是初始化时定义,那就不好说了,比如i为整形,pi为二维指针,这就OK,完全没问题。

                                                                  pi与i均是同类型的多维指针,且pi比i多2维,那也是OK的。

其他情况基本就是错误的了(为什么说基本,因为整型与字符型有时是可以通用的)。 

查看完整回答
反对 回复 2016-02-28
  • 2 回答
  • 0 关注
  • 1319 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信