定义指针变量的时候为啥要加*号啊,只有指针变量才能存地址吗?能不能用普通的一个其他类型的变量存地址

定义指针变量的时候为啥要加*号啊,只有指针变量才能存地址吗?能不能用普通的一个其他类型的变量存地址然后用*把存的地址之中的内容给取出来?才学到指针一头雾水。... 定义指针变量的时候为啥要加*号啊,只有指针变量才能存地址吗?能不能用普通的一个其他类型的变量存地址然后用*把存的地址之中的内容给取出来?才学到指针一头雾水。 展开
 我来答
红颜不求得
2017-05-12 · TA获得超过773个赞
知道小有建树答主
回答量:367
采纳率:100%
帮助的人:229万
展开全部
加*是为了说明此处声明的是一个指针型变量,否则会搞混
比如定义一个int型变量是
int a;
如果定义一个指向int型的指针也是
int p;
那如何分辨出p是一个指向int型的指针而不是一个int型呢?加上*就辨别出来了(其实也可以设定为别的,比如int pointer p;表示p是指向int型的指针,但是point五个字母能比*更方便吗?)
int *p; //说明p是一个指向int型的指针
可能你困惑的是为什么要说明定义的指针是“指向什么类型的”,而不能所有指针都一个样子定义,比如
pointer p;
这是因为指针不仅要存储地址,还要存储“如何读取数据”的方法,否则读取数据会出错。举个例子,假设指针中存了一个地址28790,那我们是该从27890开始读取一个字节,还是读取四个字节,还是读取八个字节?我们只知道地址的“起始”是27890,如果我们不知道这个指针所指的地址的“末尾”在哪儿,我们就没法准确读取出数据。
如果给指针说明了“指向的是什么类型”,那我们就可以准确的读取出数据,比如char *p; 依然假设p中存的地址为27890,那么因为p是char *型的,我们就知道从27890开始要读取一个字节,如果p是int *型的,那我们就读取四个字节。
这就是为什么指针的定义需要*符号
追问
*p和p里分别是什么东西啊?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式