c语言指针p
⑴ c语言中,若p为一个指针,则*p是指什么
指针可以理解为内存空间的代号,*p
为该空间中所存变量。若将p比作杯子的名称,那*p就是杯子中存的水,当然也可以是饮料等其他东西!
⑵ C语言 *p 和p的区别
C语言中,*p 和p都常用在指针当中表示一个指针变量,*p 和p的区别:
1、表示的含义不同
*p表示此指针指向的内存地址中存放的内容。
p表示一个指针变量的名字,指此指针变量所指向的内存地址。
2、输出的格式不同
*p一般是一个和指针类型一致的变量或者常量。
p输出的是一个16进制数,输出一个指针的地址。
3、功能不同
*p是让程序去那个地址取出数据。
p存放的是地址。
例子:
1、int a[5]={1,2,3,4,5};
int *p=a;//这是在定义指针变量p的同时就直接给它初始化,即把数组a的首地址赋给它。
2、int a[5]={1,2,3,4,5};
int *p;//声明指针变量p
p = a;
(2)c语言指针p扩展阅读
(*p)操作是这样一种运算,返回p 的值作为地址的那个空间的取值。(&p)则是这样一种运算,返回当时声明p 时开辟的地址。可以用赋值语句对内存地址赋值。
例:
int *p;
p=2003H;
*p=3000H
结果:
**p=*(*(p))=*(*(2003H))=*(3000H)=3000H。
&&p=&(&(p))=&(3001H),此时出错了,3001H 是个常数无法存放地址。
*&p=*(&(p))=*(3001H)=2003H,也就是*&p=p。
⑶ C语言指针**p是什么意思
**p表示p也表示地址,简单的说,这个地址对应的存储单元存储的数也是一个地址,而不是数值,而这个被存储的地址对应的存储单元存储的数据才是真正的相应类型的数值!
例如:
int i=10; //定义了一个整型变量
int *p=&i; //定义了一个指针指向这个变量
int **p1=&p; //定义了一个二级指针指向p指针
那么取出10的值方式为:
printf(“i=[%d] ”,*p);
printf(“i=[%d] ”,**p1);
(3)c语言指针p扩展阅读:
指针与数组关系
指针数组:就是一个由指针组成的数组,那个数组的各个元素都是指针,指向某个内存地址。char *p[10];//p是一个指针数组
数组指针:数组名本身就是一个指针,指向数组的首地址。注意这是一个常数。
example:
char (*p)[10]//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语言的指针运算中*(p+1)与p+1有什么区别 p是指针
*(p+1)表示具体的数值,指针p所指向的内存地址单元的下一个内存地址单元中的值;
p+1
表示地址,指针p所指向的内存地址的下一个内存地址。
可以通过下面的实例来理解*(p+1)与p+1之间的区别:
int *p; // 定义一个int类型的指针p
int a[3]={1,2,3}; // 定义一个int类型的数组a,并进行初始化
p = a; // 使指针p指向数组a的首地址
printf("%d", *(p+1)); // 输出2,等价于a[1]
printf("%x", p+1); // 以16进制形式输出a[1]的地址(如08ff12),等价于&a[1](&为取地址运算符)
⑹ c语言的指针部分 *p与p区别
c语言的指针部分 *p与p区别如下:
1、作用不同
*p表示此指针指向的内存地址中存放的内容。
p是一个指针变量的名字,表示此指针变量指向的内存地址。
2、输出内容的格式不同
*p常用在一个和指针类型一致的变量或者常量。
p输出一个指针的地址,通常是输出一个16进制的数。
3、效果不同
*p是让编译器从指定的地址中读取出数据。
p是用来存放要读取数据的地址。
(6)c语言指针p扩展阅读
C语言中使用指针的作用:
1、指针使程序的不同部分能够共享数据
类似于共享内存,如果将某一个数据值的地址从一个函数传递到另外一个函数,这两个函数就能使用同一数据。
2、利用指针,能在程序执行过程中预留新的内存空间
大多数情况下,可以看到程序使用的内存是通过显式声明分配给变量的内存。但是在很多应用场合中,可能程序运行时不清楚到底需要多少内存,使用指针可以让程序在运行时获得新的内存空间,并让指针指向这一内存更为方便。
3、指针可以用来记录数据项之间的关系
在高级程序设计应用中,指针被广泛应用于构造单个数据值之间的联系。比如,程序员通常在第一个数据的内部表示中包含指向下一个数据项的指针(实际上就是链表了),来说明这两个数据项之间有概念上的顺序关系。
⑺ 求C语言中指针--p是什么意思
它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针
所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。
先声明几个指针放着做例子:
例一:
(1)int *ptr;
(2)char *ptr;
(3)int **ptr;
(4)int (*ptr)[3];
(5)int *(*ptr)[4];
如果帮到你,请选为满意答案吧!!!
有什么不懂的可以Hi我哈,大家一起学习哈.
消息来源:华夏联盟
⑻ c语言指针*p中p++什么意思
**p :二级指针,表示p所指向的地址里面存放的是一个指向类型的指针。
*p:一级指针,表示p所指向的地址里面存放的是一个类型的值。
(8)c语言指针p扩展阅读:
指针变量可以进行加减运算,例如p++、p+i、p-=i。指针变量的加减运算并不是简单的加上或减去一个整数,而是跟指针指向的数据类型有关。
给指针变量赋值时,要将一份数据的地址赋给它,不能直接赋给一个整数,例如int *p = 1000;是没有意义的,使用过程中一般会导致程序崩溃。
使用指针变量之前一定要初始化,否则就不能确定指针指向哪里,如果它指向的内存没有使用权限,程序就崩溃了。对于暂时没有指向的指针,建议赋值NULL。
两个指针变量可以相减。如果两个指针变量指向同一个数组中的某个元素,那么相减的结果就是两个指针之间相差的元素个数。
数组也是有类型的,数组名的本意是表示一组类型相同的数据。在定义数组时,或者和 sizeof、& 运算符一起使用时数组名才表示整个数组,表达式中的数组名会被转换为一个指向数组的指针。