好吧,我很難理解指針指向數組的指針。 考慮下面的代碼:爲什麼指向一個指針與指向數組的指針不兼容?
char s[] = "Hello, World";
char (*p1)[] = &s;
char **p2 = &s;
printf("%c\n", **p1); /* Works */
printf("%c\n", **p2); /* Segmentation fault */
爲什麼第一個printf工作,而第二個不?
從我所瞭解的's'是指向數組的第一個元素(即'H')的指針。 所以將p2聲明爲char **意味着它是一個指向char的指針。指向's'應該是合法的,因爲's'是指向char的指針。因此解除引用(即** p2)應該給出'H'。但它不!
的分配沒有彙編VC++ 2010。 – Jon
奇怪。它在GCC 4.4.4上正常工作。 – Meta
@Meta:不在GCC 4.3.4([demo](http://ideone.com/K6D1D))或4.5.1([demo](http://ideone.com/gTGhY))... – ildjarn