为了账号安全,请及时绑定邮箱和手机立即绑定

C语言指针**p是什么意思

C语言指针**p是什么意思

C
牛魔王的故事 2019-04-04 02:01:08
C语言指针**p是什么意思
查看完整描述

5 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

**p :二级指针,表示p所指向的地址里面存放的是一个指向类型的指针。

*p:一级指针,表示p所指向的地址里面存放的是一个类型的值。

扩展资料

指针变量可以进行加减运算,例如p++、p+i、p-=i。指针变量的加减运算并不是简单的加上或减去一个整数,而是跟指针指向的数据类型有关。

给指针变量赋值时,要将一份数据的地址赋给它,不能直接赋给一个整数,例如int *p = 1000;是没有意义的,使用过程中一般会导致程序崩溃。

使用指针变量之前一定要初始化,否则就不能确定指针指向哪里,如果它指向的内存没有使用权限,程序就崩溃了。对于暂时没有指向的指针,建议赋值NULL。

两个指针变量可以相减。如果两个指针变量指向同一个数组中的某个元素,那么相减的结果就是两个指针之间相差的元素个数。

数组也是有类型的,数组名的本意是表示一组类型相同的数据。在定义数组时,或者和 sizeof、& 运算符一起使用时数组名才表示整个数组,表达式中的数组名会被转换为一个指向数组的指针。


查看完整回答
反对 回复 2019-04-05
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

**p表示p也表示地址,简单的说,这个地址对应的存储单元存储的数也是一个地址,而不是数值,而这个被存储的地址对应的存储单元存储的数据才是真正的相应类型的数值!

例如: 

int i=10; //定义了一个整型变量 

int *p=&i; //定义了一个指针指向这个变量 

int **p1=&p; //定义了一个二级指针指向p指针 

那么取出10的值方式为: 

printf(“i=[%d]\n”,*p); 

printf(“i=[%d]\n”,**p1);

扩展资料:

指针与数组关系

指针数组:就是一个由指针组成的数组,那个数组的各个元素都是指针,指向某个内存地址。 char *p[10];//p是一个指针数组

数组指针:数组名本身就是一个指针,指向数组的首地址。注意这是一个常数。

example:

char (*p)[10]//p是一个数组指针

函数指针:本身是一个指针,指向一个函数入口地址,通过该指针可调用其指向的函数,使用函数指针可实现回调函数。



查看完整回答
反对 回复 2019-04-05
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

char p表示p的类型是字符。
char *p表示p的类型是字符指针,指向字符类型的变量。
char **p表示p的类型是字符指针的指针,指向字符指针的变量。

查看完整回答
反对 回复 2019-04-05
?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

例如 int **p ;
解释:
int *p;则p是一个指向int型的变量的地址, p是地址;
*p指的是内容
而int **p;p指的是一个地址,p放的是*p的地址, *p指的是存放int 的地址.

查看完整回答
反对 回复 2019-04-05
  • 5 回答
  • 0 关注
  • 2714 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信