最近在自学C语言 请问一下 P=&a,和*p=a有什么区别么 (能举一下例子么)

如题所述

P=&a表示,P这个变量(内存地址)里面存的是a这个变量(即,内存地址)的地址。P在声明的时候,已经有自己的地址了,这样的用法就是把P里面的值改了,是安全的。

*P=a表示,P这个变量(即,内存地址)里面存的那个地址,其所存储的值为a这个变量的值。如果P里面的值(注意,是P里面的值,不是*P,也不是&P)是个非法的地址,比如说,你没有给初始值。那么,*P=a会导致segementation fault(linux下,如果windows下没出问题,那就是windows自己的底层库给P预设了安全的数值,但是,纯从标准上看,是不应该未初始化就这么写的。)

另外:
P=&a;
*P=b;
就会导致,a == b 为真。想想这个a是怎么变成与b相等的。这个例子应该足够理解其中区别了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-19
p是指针变量,它存储的是指针

p=&a 是把a的地址给p
而*p则和a是一个类型,就是说*p相当于一个存储数据的变量,*p=a就是把a的值赋给*p
例如把你的两个语句P=&a;*p=a 那么 a的地址先赋给了p, 之后p就是a的地址,*p实际就是a了,*p=a就是把a的值存入p地址所标示的内存单元中,实际上如果把这两句放一起,后面那句*p=a就是没用的了。
第2个回答  2013-09-19
p是指针,它的数值是指向一个内存的地址,
&a的意思是取变量a的内存地址,所以p=&a的意思就是把变量a的内存地址赋值给指针p
*p的意思是取出p指向的内存地址的内容,所以*p=a的意思是把变量a的数据复制给指针p指向的内存空间.
第3个回答  2013-09-19
P=&a //把变量a的地址给指针p **p=a //变量a的值给指针p指向的地址
int *p,a=1;
p=&a //p就指向了存储a值的地址
//cout <<"p指向的地址:"<<p<< " a的地址:"<<&a<<endl; //输出结果是a的地址了
*p =a; //p指向的地址的值为a的值;
cout<<"p指向的地址的值:" <<*p<< " a的值:"<<a;
第4个回答  2013-09-19
如果不区分大小写的话。
根据你的赋值。
p是一个指针变量。
a是一个变量。
p=&a, 把变量a的地址赋值给指针变量p。
*p=a 变量a的值赋值给a指向的内存单位。

最近在自学C语言 请问一下 P=&a,和*p=a有什么区别么 (能举一下例子么...
P=&a表示,P这个变量(内存地址)里面存的是a这个变量(即,内存地址)的地址。P在声明的时候,已经有自己的地址了,这样的用法就是把P里面的值改了,是安全的。P=a表示,P这个变量(即,内存地址)里面存的那个地址,其所存储的值为a这个变量的值。如果P里面的值(注意,是P里面的值,不是*P...

c语言中*p=&a和p=&a有什么区别
c语言中*p=&a和p=&a只有一个区别就是指针初始化时间不同。p=&a:P是1维指针;p=&a:P是2维指针;p=&a示例:inta;int*p;a=5;p=&a;printf("valueis:%d.",*p);

*p=&a和*p=a的区别是什么?
1、一般来说*p=&a的表示方法是错的,*p=a和p=&a是正确的。2、*p=a的意思:将a的值赋给p指针指向的地址的值。3、p=&a的意思是:将a的地址赋给指针p。4、区别:*p是一个值;p是一个地址;两者完全不相同。5、*代表着p指向的地址的值,简单来说就是取值;&是取地址符号,取的是地址;...

int *p=&a和*p=a有什么区别
1.一般来说*p=&a的表示方法是错的,*p=a和p=&a是正确的。2.*p=a的意思:将a的值赋给p指针指向的地址的值;3.p=&a的意思是:将a的地址赋给指针p;4.区别:*p是一个值;p是一个地址;两者完全不相同。5.*代表着p指向的地址的值,简单来说就是取值;&是取地址符号,取的是地址;p是...

C语言中,p=&a和*p=&a有什么区别
p=&a;是将a的地址赋值给*p,结果会是一个十六进制的数。第二个是让p指向a的地址空间。*p的傎和a相等。int a=2,*p;p=&a;打印*P应该是一个地址值,很长一串,p=&a;打*P印结果会是2;

C语言中:p = &a,这是什么意思? *p =a这又是什么意思? 这两名可以等效么...
p=&a,意思是把a是地址给p,这个p定义的时候是一个指针变量,*p=a,也是这个意思,比如a=2,那么*p就是等于2,p是存放2这个值的空间的地址,可以等效。

c语言中*p=a与*p=&a有什么区别?
int a=2,*p; *p=&a; 打印*P应该是一个地址值,很长一串, p=&a; 打*P印结果会是2;对于指针来说,*p = a[0],表示向地址为p的内存区域赋值为a[0]。p = a[0],把变量p的值改为a[0],这个语句正常应用中是错误的。变量p的值为内存地址,这样赋值会丢掉p原来指向的内存。

*p=&a和*p=a的区别是什么?
1、一般来说*p=&a的表示方法是错的,*p=a和p=&a是正确的。2、*p=a的意思:将a的值赋给p指针指向的地址的值。3、p=&a的意思是:将a的地址赋给指针p。4、区别:*p是一个值;p是一个地址;两者完全不相同。介绍 指针,是C语言中的一个重要概念及其特点,也是掌握C语言比较困难的部分。指...

*p=&a和*p=a的区别
int a = 3, *p = &a; 这行代码定义了一个整型变量a并初始化为3,同时定义了一个指向a的指针p,并将a的地址赋给了p。这是正确的定义并初始化指针的方法。总结:在C语言中,正确的指针赋值操作是将一个地址赋给指针,而不是将一个值赋给指针。同时,定义指针时应该明确指针将要指向的类型。

c语言中*p=a与*p=&a有什么区别
首先来说一下*和&,为了便于理解你可以认为,这里*是取内容,&是取地址。我不讨论它们的区别,因为*p=&a这个形式一般是错的,常用的是p=&a。下面比较*p=a和p=&a。看图,图很详细。显然它们是等价的。然后比较*p=&a和p=&a;则这两种都是对指针变量的赋值,赋值有两种形式 ①先定义后赋值 in...

相似回答