在c语言中int **p,如果想取它的值,用*p来表达吗?
发布网友
发布时间:2023-05-07 01:04
我来回答
共2个回答
热心网友
时间:2023-11-24 17:10
不是。
语句int **p;定义的p是二级指针,也就是,“指向指针的指针”,所以,用*p取出来的,仍然是一个地址。要想取出存放的用户数据,必须要用**p,才可以。
另外,你题目中的叙述有点问题,就是那个“它”指的是谁,是p吗?
现在分析一下:
当你用int **p;声明一个变量时,系统会给变量p分配一个储存空间,分配完后,可以用&p查看这个变量的位置。但是,它是一个空指针,不管用*p还是**p都只会得到乱码,没有实际作用。
但是你可以使用它,比如你有定义两个变量:
int a=5,*b;
并且再给b和p赋值:
b=&a;
p=&b;
那么,你就可以用:
p得到p的值(里面存的b的地址)
*p得到b的值(里面存的a的地址)
**p得到a的值(5)
所以,你确定是要p的值吗?直接用p就可以。要想a的值,就要用**p了。
不知说明白没有,如果有什么问题请留言。
热心网友
时间:2023-11-24 17:10
不是。
语句int **p;定义的p是二级指针,也就是,“指向指针的指针”,所以,用*p取出来的,仍然是一个地址。要想取出存放的用户数据,必须要用**p,才可以。
另外,你题目中的叙述有点问题,就是那个“它”指的是谁,是p吗?
现在分析一下:
当你用int **p;声明一个变量时,系统会给变量p分配一个储存空间,分配完后,可以用&p查看这个变量的位置。但是,它是一个空指针,不管用*p还是**p都只会得到乱码,没有实际作用。
但是你可以使用它,比如你有定义两个变量:
int a=5,*b;
并且再给b和p赋值:
b=&a;
p=&b;
那么,你就可以用:
p得到p的值(里面存的b的地址)
*p得到b的值(里面存的a的地址)
**p得到a的值(5)
所以,你确定是要p的值吗?直接用p就可以。要想a的值,就要用**p了。
不知说明白没有,如果有什么问题请留言。
热心网友
时间:2023-11-24 17:10
int **p;将p定义成了二级指针(指向指针的指针),要取p指向的变量(是一个一级指针)的值,可以用*p,要取p指向的一级指针指向的变量(是一个int型变量)的值可以用**p。
如:
int n=100;
int *pn=&n;
int **p=&pn;
则*p等于pn,即*p等于&n(*p等于n的地址),而**p就等于n。
热心网友
时间:2023-11-24 17:10
int **p;将p定义成了二级指针(指向指针的指针),要取p指向的变量(是一个一级指针)的值,可以用*p,要取p指向的一级指针指向的变量(是一个int型变量)的值可以用**p。
如:
int n=100;
int *pn=&n;
int **p=&pn;
则*p等于pn,即*p等于&n(*p等于n的地址),而**p就等于n。
热心网友
时间:2023-11-24 17:10
不是。
语句int **p;定义的p是二级指针,也就是,“指向指针的指针”,所以,用*p取出来的,仍然是一个地址。要想取出存放的用户数据,必须要用**p,才可以。
另外,你题目中的叙述有点问题,就是那个“它”指的是谁,是p吗?
现在分析一下:
当你用int **p;声明一个变量时,系统会给变量p分配一个储存空间,分配完后,可以用&p查看这个变量的位置。但是,它是一个空指针,不管用*p还是**p都只会得到乱码,没有实际作用。
但是你可以使用它,比如你有定义两个变量:
int a=5,*b;
并且再给b和p赋值:
b=&a;
p=&b;
那么,你就可以用:
p得到p的值(里面存的b的地址)
*p得到b的值(里面存的a的地址)
**p得到a的值(5)
所以,你确定是要p的值吗?直接用p就可以。要想a的值,就要用**p了。
不知说明白没有,如果有什么问题请留言。
热心网友
时间:2023-11-24 17:10
int **p;将p定义成了二级指针(指向指针的指针),要取p指向的变量(是一个一级指针)的值,可以用*p,要取p指向的一级指针指向的变量(是一个int型变量)的值可以用**p。
如:
int n=100;
int *pn=&n;
int **p=&pn;
则*p等于pn,即*p等于&n(*p等于n的地址),而**p就等于n。