c语言的指针部分 *p与p区别

作者&投稿:宜货 (若有异议请与网页底部的电邮联系)
c语言的指针部分*p与p的区别是什么?~

p是指针变量,其值是一个变量的地址。p收到了哪个变量的地址,就指向哪个变量。该变量成为p的对象。
*p是p所指向的对象的值。
例如:int i=3,*p;
p=&i; 注意:p收到i的地址,故p指向i,i是p的对象。
printf("%d,%d
",i,*p); 输出:3,3 注意:*p是p所指向的对象的值,即i的值。
C语言
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

声明为指针以后,“语句”里,出现 *p, 表示 是 数值,出现 p, 表示 是 地址。
int a=5;int *p=&a; printf("%d", *p); // 打印 数值 5
如果 写 printf("%d", p); 不带星号的,则是 a的地址。

c语言的指针部分 *p与p区别如下:

1、作用不同

*p表示此指针指向的内存地址中存放的内容。

p是一个指针变量的名字,表示此指针变量指向的内存地址。

2、输出内容的格式不同

*p常用在一个和指针类型一致的变量或者常量。

p输出一个指针的地址,通常是输出一个16进制的数。

3、效果不同

*p是让编译器从指定的地址中读取出数据。

p是用来存放要读取数据的地址。

扩展资料

C语言中使用指针的作用:

1、指针使程序的不同部分能够共享数据  

类似于共享内存,如果将某一个数据值的地址从一个函数传递到另外一个函数,这两个函数就能使用同一数据。

2、利用指针,能在程序执行过程中预留新的内存空间  

大多数情况下,可以看到程序使用的内存是通过显式声明分配给变量的内存。但是在很多应用场合中,可能程序运行时不清楚到底需要多少内存,使用指针可以让程序在运行时获得新的内存空间,并让指针指向这一内存更为方便。

3、指针可以用来记录数据项之间的关系    

在高级程序设计应用中,指针被广泛应用于构造单个数据值之间的联系。比如,程序员通常在第一个数据的内部表示中包含指向下一个数据项的指针(实际上就是链表了),来说明这两个数据项之间有概念上的顺序关系。

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



p是指针变量,其值是一个变量的地址。p收到了哪个变量的地址,就指向哪个变量。该变量成为p的对象。
*p是p所指向的对象的值。
例如:int i=3,*p;
p=&i; 注意:p收到i的地址,故p指向i,i是p的对象
printf("%d,%d\n",i,*p); 输出:3,3 注意:*p是p所指向的对象的值,即i的值。
祝学业进步!

呃⋯⋯第二个前面无运算符相当于p,有运算符且p是函数名或函数指针时,加括号相当于p,不是则无意义,p是函数名且返回指针且是调用时,不加括号是返回的指针的间接引用,第一个p不是指针的话无意义,如果是指针(什么指针都行,包括函数指针等不常用的,但不能是野指针,运行时会报错),如果这个表达式前面是运算符号,相当于p,如果前面是另一个表达式,是*p与那个表达式位与,p是函数指针时加括号相当于p,p是函数指针或函数的二级指针且该函数返回引用时是返回的引用的内存地址。(呼!累死我了,给个满意啊!看不懂的话等我有时间弄个表格)

赋值的时候*p表示这是一个指针,p表示是一个数
而用的时候如果p是一个指针,那么*p表示所指向的内容,p本身存着一个地址。

p中放的是地址
int a=321;
int *p=a;
其实a是一个地址的别名,这样方便人们识别;
p也是一个地址,并且存储空间中的这个地址中放的是变量a即321这个数在存储器中的地址,而“*”的作用就是将p这个地址中存放的数所代表的地址中所存放的数据。


上街区18548352098: C语言中,*p和p有什么区别 -
素申悦复: 如果p为普通指针变量,那么:p代表内存中的某存储单元的地址,而*p代表该存储单元中的存储的内容.

上街区18548352098: C语言中,指针变量*p与**p有什么区别?
素申悦复: *p和**p都是指针,**p是*p的地址 .

上街区18548352098: c语言定义指针时**p与*p的区别 谢谢啦 -
素申悦复: int**p只能指向int*p,而*p只能指向intp. 所以int**p要想指向int p,就不能加一个*号了,要加两个*号.加一个是int*p,加两个才是int p

上街区18548352098: c语言中指针变量p与*P有什么不同 -
素申悦复: p是地址 *p是那个地址所包含的值

上街区18548352098: *p和**p的区别 -
素申悦复: *p和**p的区别: 一、指针级别不同 *p是一级指针. **p是二级指针. 二、表示的含义不同 *p表示p所指向的地址里面存放的是一个int类型的值 . **p表示p所指向的地址里面存放的是一个指向int类型的指针. 三、指向的内容不同 *p=a指针p将...

上街区18548352098: c语言*p和p到底什么关系? -
素申悦复: "p的值变为a的地址"正确.p的值(不要说p的地址,因为p的地址是&p)不是321h而是123h.&p是存放变量p的地址(这才是p的地址,即存放p的地方),尽管可以用printf("%d\n",p);或用printf("%x\n",p);打印出来,但除了特殊要求外程序员并没有知道&p的必要,所以&p到底在哪里我们并不知道,也没有必要知道,即所谓对程序员是“透明”的.*p是取p指向的目标值,若此例中a==1,则有了p=&a;后,*p的值就是1.

上街区18548352098: c语言 *p跟p什么区别啊
素申悦复: 对初学者来说,主要是分辨*号出现的位置,下面举例说明. int i=2; int *p=&i; //出现在定义中,表示类型; int *q; //出现在定义中,表示类型; q=&i; //同样是将&i赋给指针,但是这儿不需要*号. *q=5; //相当于i=5,这儿的*是在使用中,表示对指针所指的对象操作.

上街区18548352098: C语言中 **p 和*p什么区别?
素申悦复: *p是指一个指针,**p是指一个指向指针的指针

上街区18548352098: c语言中*++p与++*p有什么区别 -
素申悦复: 区别: 1、*p++与*(p++)是等价的,表示取p所指单元的值,p指向下一单元,即p自加1. 2、*p++是指下一个地址. 3、(*p)++是指将*p所指的数据的值加一. C编译器认为*和++是同优先级操作符,且都是从右至左结合的,所以*p++中的++只...

上街区18548352098: C语言 *p和p有什么区别啊?为什么最后输出*p=20啊? -
素申悦复: p为指针变量,存储的是变量值在内存中的地址,单独的p表示一个内存地址,*p表示从p地址中取出其中存储的值,即count的值20

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网