我想知道以这种方式设置C指针之间的最大区别是什么:
int int_var = 5;
int *int_ptr = &int_var;
就这样:
int int_var = 5;
int *int_ptr = int_var;
因为在这两种情况下*int_ptr
的结果都是5,没有?
答案 0 :(得分:2)
不,仅在第一种情况下。当您尝试使用指针时,第二种情况会导致未定义的行为。使用第一种情况。
一些解释:
int int_var = 5;
int *int_ptr = &int_var; // here int_ptr will hold the address of var
尽管
int int_var = 5;
int *int_ptr = int_var; // here int_ptr will hold the address 5.
答案 1 :(得分:0)
没有。在第一种情况5中,在第二种情况下是未定义的,是具有地址5的存储器的内容。??
答案 2 :(得分:0)
没有int_ptr
是指针,因此您在定义时必须为其指定地址
第一个是正确的
int int_var = 5;
int *int_ptr = &int_var;
另一个是错的
另一个你正在为指针5
(地址)分配一个int值int_ptr
,所以就像你指定5
作为指针int_ptr
的地址
答案 3 :(得分:0)
在C中,pointers
指向地址本身。 &
运算符的地址是变量地址的位置。
所以:
int int_var = 5;
int *int_ptr = &int_var;
正确使用 * int_ptr ,因为它指向int_var的ADDRESS
,其值为5
然而在:
int int_var = 5;
int *int_ptr = int_var;
* int_ptr 指向一个5的地址,而不是值5所在的地址,这是一个随机数。
另外关于数组:
char *y;
char x[100];
y = x;
这可以完成,因为数组实际上是一个地址。