在下面的代码中,I';我不知道他们的价值观是什么。我能在这里得到一些帮助吗? #包括 //用C程序演示指针到指针 int main() { int-var=789; //var的指针 int*ptr2; //ptr2的双指针 int**ptr1; //在ptr2中存储var的地址 ptr2=&var; //在ptr1中存储ptr2的地址 ptr1=&ptr2; //使用 //单指针和双指针 printf(“var的值=%d\n”,var); printf(“使用单指针的变量值=%d\n”,*ptr2); printf(“使用双指针的变量值=%d\n”,**ptr1); //下面是我对这些值感到困惑的地方。 //我知道其中一些是ptr1的地址, //但是我很困惑,ptr1的其他值是什么? printf(“此值是多少=%x\n”,*ptr1); printf(“这个值是多少=%x\n”,ptr1); printf(“此值是多少=%x\n”,&ptr1); printf(“此值是多少=%d\n”,*ptr1); printf(“这个值是多少=%d\n”,ptr1); printf(“此值是多少=%d\n”,&ptr1); 返回0; }
在打印在下面的代码中,I';我不知道他们的价值观是什么。我能在这里得到一些帮助吗? #包括 //用C程序演示指针到指针 int main() { int-var=789; //var的指针 int*ptr2; //ptr2的双指针 int**ptr1; //在ptr2中存储var的地址 ptr2=&var; //在ptr1中存储ptr2的地址 ptr1=&ptr2; //使用 //单指针和双指针 printf(“var的值=%d\n”,var); printf(“使用单指针的变量值=%d\n”,*ptr2); printf(“使用双指针的变量值=%d\n”,**ptr1); //下面是我对这些值感到困惑的地方。 //我知道其中一些是ptr1的地址, //但是我很困惑,ptr1的其他值是什么? printf(“此值是多少=%x\n”,*ptr1); printf(“这个值是多少=%x\n”,ptr1); printf(“此值是多少=%x\n”,&ptr1); printf(“此值是多少=%d\n”,*ptr1); printf(“这个值是多少=%d\n”,ptr1); printf(“此值是多少=%d\n”,&ptr1); 返回0; },c,C,在打印*ptr1的第一种情况下,您打印的是ptr1所指向的变量的值(在这种情况下是ptr2,它存储var的地址) 在打印ptr1的第二种情况下,您打印的是ptr1的值(在这种情况下是ptr2的地址) 在上次打印%ptr1的情况下,您正在打印ptr1的地址 正如@Raman在评论中所说:“&运算符取出地址,*运算符取消引用指针(从存储为值的地址中取出值)”。如果您想使用指针,请记住这一点 旁注:如果我没有弄错的话,格式说明符只会更改这些数字的显示方式,因此,例如,当使用%x时,该值将打印为无符号十
*ptr1
的第一种情况下,您打印的是ptr1
所指向的变量的值(在这种情况下是ptr2
,它存储var
的地址)
在打印ptr1
的第二种情况下,您打印的是ptr1
的值(在这种情况下是ptr2
的地址)
在上次打印%ptr1
的情况下,您正在打印ptr1
的地址
正如@Raman在评论中所说:“&运算符取出地址,*运算符取消引用指针(从存储为值的地址中取出值)”。如果您想使用指针,请记住这一点
旁注:如果我没有弄错的话,格式说明符只会更改这些数字的显示方式,因此,例如,当使用
%x
时,该值将打印为无符号十六进制整数,当使用%d
时,该值将打印为有符号十进制整数。如果您想了解更多关于printf()
的信息,可以阅读。请通读。然后相应地问一个问题。我会的,谢谢你提供的信息。这是我第一次,我不知道如何正确格式化它。我很抱歉没有提前查找。我删除了我的评论,因为*运算符去掉的值是错误的。它取消了指针的引用(从存储为值的地址中取出值)好的,我现在就编辑它,谢谢@Raman!
#include <stdio.h>
// C program to demonstrate pointer to pointer
int main()
{
int var = 789;
// pointer for var
int *ptr2;
// double pointer for ptr2
int **ptr1;
// storing address of var in ptr2
ptr2 = &var;
// Storing address of ptr2 in ptr1
ptr1 = &ptr2;
// Displaying value of var using
// both single and double pointers
printf("Value of var = %d\n", var );
printf("Value of var using single pointer = %d\n", *ptr2 );
printf("Value of var using double pointer = %d\n", **ptr1);
// Below is where I am confused as to what the values are.
// I understand that some of them are the address of ptr1,
// but then I get confused as to what are the other values of ptr1?
printf("what is this value = %x\n", *ptr1);
printf("what is this value = %x\n", ptr1);
printf("what is this value = %x\n", &ptr1);
printf("what is this value = %d\n", *ptr1);
printf("what is this value = %d\n", ptr1);
printf("what is this value = %d\n", &ptr1);
return 0;
}