GCC 4.4.4的C89分配一个指向指针的数组为char
#define SIZE 5
char *names[SIZE] = {"peter", "lisa", "simon", "sarah", "julie"};
char *search_names[SIZE] = {0};
size_t i = 0;
for(i = 0; i < SIZE; i++) {
search_names[i] = names[i]++;
}
for(i = 0; i < SIZE; i++) {
printf("name to search for [ %s ]\n", search_names[i]);
}
我感到困惑的这一行search_names[i] = names[i]++;
这是一个指针数组为char *。只是我的实验,我认为它应该是&names[i]++
。因为我想要在那个位置获得指针。因此,让&可以获得指针指向的地址。
我想我可以像这样增加:(names[i]) + i
;
只是对这条线感到困惑。
我不认为我完全理解你的代码的意图。这两个数组都是指向char的指针数组。你只是将一个数组复制到另一个数组中?在这种情况下,它应该是“search_names [i] = names [i];”。为什么你需要增加? – 2010-08-21 19:04:50
是的,你是对的。我只是试验和尝试不同的事情。但是,search_names [i] = names [i];产生与search_names [i] = names [i] ++相同的结果;这是否意味着它们在某种意义上是平等的。名称[i] ++会增加多少?谢谢。 – ant2009 2010-08-21 19:13:40
名称[i]是指像“彼得”这样的字符串。在C中,字符串被存储为字符数组,以“\ 0”结尾。当你抓住名字[i]时,你实际上是抓住一个指向名字[i]的字符串中的第一个元素的指针,换句话说,在“peter \ 0”中指向“p”的指针。当你增加指针时,它向前移动一个空格,指向“e”,使“eter \ 0”。尽管由于模糊的优先规则,在赋值给search_names [i]之后增量发生,因此它看起来相同,但是您正在执行额外的指针操作。 – 2010-08-21 19:37:10