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的使用

int a, b, c;

int **p;

a = 5;

b = 6;

c = 7;

p = (int **)malloc(EL_CNT * sizeof(int *));

*p = &a;

*(p + 1) = &b;

*(p + 2) = &c;

for(int i = 0; i < EL_CNT; i++) 

printf("value is : %d\n", **(p + i));

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-11-20

1.一般来说*p=&a的表示方法是错的,*p=a和p=&a是正确的。

2.*p=a的意思:将a的值赋给p指针指向的地址的值;

3.p=&a的意思是:将a的地址赋给指针p;

4.区别:*p是一个值;p是一个地址;两者完全不相同。

5.*代表着p指向的地址的值,简单来说就是取值;&是取地址符号,取的是地址;p是指针,可以理解为所指向的值的地址,*p就是取p指针指向的地址的值,&a就是取a的地址。

扩展资料:

指针的两种含义:一是作为数据类型,二是作为实体

1.指针作为实体,是一个用来保存一个内存地址的计算机语言中的变量。指针一般出现在比较底层的程序设计语言中,如C语言。高层的语言如Java一般避免用指针,而是引用。

2.指针作为数据类型,可以从一个函数类型、一个对象类型或者一个不完备类型中导出。从中导出的数据类型称之为被引用类型。指针类型描述了一种对象,其值为对被引用类型的实体的引用。

参考资料:百度百科——指针

第2个回答  2009-03-07
*是解引用运算符 &是取地址运算符

*p=&a这样写是不正确的(除非p是指向指针的指针),这时候*p前面要有类型符(比如int等),通常的情况是这样用的int *p=&a;这一句作用相当于int *p; p=&a; 两句,这句话的意思是定义一个int类型指针,然后用a的地址给p赋值;

对于指针p来说,*p就是指针p所指向的内存空间存储的值,*p=a就是把p所指向的那一内存空间的值赋值为a,p本身不改变

p=&a就是用a的地址对p赋值,a是一个变量,&a就是存储这个变量的内存地址,指针存储的就是一个地址,*p就是这一地址中的内容,这样说能明白吗??不明白来问我吧,我百度hi经常在线
第3个回答  2017-02-20
如果a都是基础类型, 而不是指针, 比如a为int
那么 p=&a, 是把a的地址,赋值给p, p需要是int *类型。
而*p=&a 是把a的地址赋值给*p, p需要是int **类型。

注意 如果是int *p=&a;这种形式
是定义int *类型的p, 并给p初始化为&a。 等效于
int *p;
p=&a;
还是给p赋值,而不是给*p赋值。
第4个回答  2014-05-02
*p=&a;是将a的地址赋值给*p,结果会是一个十六进制的数。 第二个是让p指向a的地址空间。*p的傎和a相等。 int a=2,*p; *p=&a; 打印*P应该是一个地址值,很长一串, p=&a; 打*P印结果会是2;本回答被提问者采纳