关于指针的几个问题

[复制链接]
查看11 | 回复5 | 2008-8-12 12:55:18 | 显示全部楼层 |阅读模式
int *p=q;和int *p=&q;有什么区别?地址存在了 *p还是p?如果这时的下一句是p=0;就会怎么样?

回复

使用道具 举报

千问 | 2008-8-12 12:55:18 | 显示全部楼层
第一个问题:前一个q和后一个q是不同的,前类型为int型指针,后为int型整数;第二个问题:p的值就是地址,如int a=20;int* p=a;这里p的值就是a的地址而输出的时候cout<<*p<<endl;和cout<<a<<endl;效果是一样的;(补充一下,*是聚会运算符)第三个问题:这是错误的,是的值只能是地址,直接赋一个整型是不可以的
回复

使用道具 举报

千问 | 2008-8-12 12:55:18 | 显示全部楼层
int *p=q把变量q的值赋给int指针pint *p=&q 把变量q的地址赋给int指针p地址存在了变量p中,定义int *p=q是把int *看为一个类型,除此之外*p则表示指针p所指向地址中的值若p=0, 则表示指针p值为0,即指向内存地址0(16进制:0x00000000)
回复

使用道具 举报

千问 | 2008-8-12 12:55:18 | 显示全部楼层
int *p=q;表示p指向的内容为q。int *p=&q;表示p指向的内容是指针q的地址,*(*p)才是q的内容
回复

使用道具 举报

千问 | 2008-8-12 12:55:18 | 显示全部楼层
指针存储的是地址,&是取地址
回复

使用道具 举报

千问 | 2008-8-12 12:55:18 | 显示全部楼层
int *p=&q是定义时直接赋值用的格式*p=q是定义后再赋值的格式
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行