在c中初始化指针的正确方法是什么?

时间:2011-09-26 18:55:23

标签: c pointers

以下指针初始化有什么区别?

char array_thing[10];

char *char_pointer;

以下初始化有什么区别?

1.) char_pointer = array_thing;

2.) char_pointer = &array_thing

第二次初始化是否有效?

4 个答案:

答案 0 :(得分:5)

第二次初始化无效。你需要使用:

char_pointer = array_thing;

char_pointer = &array_thing[0];

&array_thing是指向数组的指针(在本例中,类型为char (*)[10],您正在寻找指向数组第一个元素的指针。

答案 1 :(得分:1)

请参阅comp.lang.c常见问题,问题6.12:http://c-faq.com/aryptr/aryvsadr.html

答案 2 :(得分:0)

请注意,您发布的代码中根本没有初始化。也就是说,你应该记住,数组衰减为指针(指向数组中第一个元素的指针)。获取数组的地址肯定是有效的,但现在您有一个(*char)[10]而不是char*

答案 3 :(得分:0)

在第一种情况下,您将char_pointer设置为array_thing的第一个元素(而不是它的地址)。使用指针算法将带您到其他元素,索引也将如此。例如

char_pointer[3] = 'c';

相同

char_pointer + = 3;    char_pointer ='c';

第二个例子......我不相信你这样做是有效的。