在c语言中,int *p,a; *p=&a,和p=&a有什么区别?

 我来答
imkarayi9d4f
2017-12-14 · TA获得超过1552个赞
知道小有建树答主
回答量:1164
采纳率:85%
帮助的人:604万
展开全部
#include <stdio.h>  
int main()
{
int *p,a=0xAA; //声明 int指针变量 p 和 int变量a 

// *p=&a; //把指针p 指向的值 改变为 变量a的地址 ,是无效的
//            因为a的地址长度为4字节,而指针p指向的值为int,即两字节的。 
printf("程序运行前的值\n");
printf("p的地址 = 0x%X \n指针p指向的值 = 0x%X \n指针p自己的值 = 0x%X\n",&p,*p,p);
printf("a的地址 = 0x%X \na的值 = 0x%X\n",&a,a);

*p=a; //指针p指向的值 改变为 a的值 
printf("\n执行 *p=a; 指令后的值\n");
printf("p的地址 = 0x%X \n指针p指向的值 = 0x%X \n指针p自己的值 = 0x%X\n",&p,*p,p);
printf("a的地址 = 0x%X \na的值 = 0x%X\n",&a,a);

p=&a; //把指针p自己的值 改变为 变量a的地址,同时指针p指向变量a的值了
printf("\n执行 p=&a; 指令后的值\n");
printf("p的地址 = 0x%X \n指针p指向的值 = 0x%X \n指针p自己的值 = 0x%X\n",&p,*p,p);
printf("a的地址 = 0x%X \na的值 = 0x%X\n",&a,a);

return 0;
}
天雨下凡
2017-12-14 · 知道合伙人教育行家
天雨下凡
知道合伙人教育行家
采纳数:17564 获赞数:65157
爱电脑、爱数学、爱音乐; 熟悉VB、C/C++、JAVA; EXCEL与VBA有所研究…… 数学,一些会,一些被忘却……

向TA提问 私信TA
展开全部
这样问说明你对指针的概念还不清楚,以下两种方式等价:
一、先声明指针,再给指针赋值
int *p,a;
p=&a;
二、定义指针的同时给它赋值
int a,*p=&a; //这里的*p可以解释成int * p,int *表示p是指向int型变量的指针
追问
就是说两者是一样的,第二种比第一种少了一步?
追答
没错,你换成别的类型试一下,也许更能明白,比如int型
以下两种方式一样:
一、
int a;
a=1;
二、
int a=1;
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式