2013-12-20 27 views
-1

以下代码的输出是什么,我无法理解* 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); 
+0

错误=一个。 ..这就是输出 –

+6

如果你不明白'* x'和'x'之间的区别是什么,最好是拿一本书并学习C. –

+2

你明白'3'和' - 的区别吗? 3“,还是”对称“和”不对称“? –

回答

0

*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 
+1

xxx = a; //错了! 012fprintf(“\ n \ n%d”,* xxx); //未定义的行为 –

+0

@KaustavRay指出这个答案是错误的。编辑你的答案。 – haccks

+0

他说:“你打印存储在地址5的值,这会导致未定义的行为。” –

2

您还没有分配的a地址指针xxx代替你传递的价值。此代码将调用未定义的行为。你会得到任何东西。 变化

xxx = a; 

x = &a; 

现在x是指针a并且当一元运算符*用于与指针则检索存储在该地址处x点的值。这被称为解引用。
也打印地址使用%p说明符。

printf("\n\n%p" , (void *)x);