以下代码的输出是什么,我无法理解* x和x之间的区别是什么,我认为它们是?使用指针并将其赋值为C语言
int a = 5 ;
int * xxx ;
xxx = a;
printf("\n\n%d" , *xxx);
printf("\n\n%d" , xxx);
*xxx = a;
printf("\n\n%d" , *xxx);
printf("\n\n%d" , xxx);
以下代码的输出是什么,我无法理解* x和x之间的区别是什么,我认为它们是?使用指针并将其赋值为C语言
int a = 5 ;
int * xxx ;
xxx = a;
printf("\n\n%d" , *xxx);
printf("\n\n%d" , xxx);
*xxx = a;
printf("\n\n%d" , *xxx);
printf("\n\n%d" , xxx);
*x
是指储存在其被x. x
举行的地址的参考值意味着你要引用这是由x.
举行来到你的代码的地址,在XXX
int a = 5 ; // a contains value 5
int * xxx ;// xxx is a integer pointer
xxx = a; // you are assigning 5 to xxx. Leads to undefined behaviour
printf("\n\n%d" , *xxx); //here *x means *xxx? You are printing value stored at address 5 Which leads to undefined behaviour.
printf("\n\n%d" , xxx); // It will print value 5
*xxx = a; // Here you are assigning 5 to address held by xxx which is 5. Undefined behaviour
printf("\n\n%d" , *xxx); //Printing value stored at the address held by xxx,Leads to undefined behaviour
printf("\n\n%d" , xxx); // printing address held by xxx
xxx = a; //错了! 012fprintf(“\ n \ n%d”,* xxx); //未定义的行为 –
@KaustavRay指出这个答案是错误的。编辑你的答案。 – haccks
他说:“你打印存储在地址5的值,这会导致未定义的行为。” –
您还没有分配的a
地址指针xxx
代替你传递的价值。此代码将调用未定义的行为。你会得到任何东西。 变化
xxx = a;
到
x = &a;
现在x
是指针a
并且当一元运算符*
用于与指针则检索存储在该地址处x
点的值。这被称为解引用。
也打印地址使用%p
说明符。
printf("\n\n%p" , (void *)x);
错误=一个。 ..这就是输出 –
如果你不明白'* x'和'x'之间的区别是什么,最好是拿一本书并学习C. –
你明白'3'和' - 的区别吗? 3“,还是”对称“和”不对称“? –