#include<stdio.h>
#include<string.h>
int main()
{
char arr[3][10];
char *ptr[3];
strcpy(arr[1],"abcde");
ptr[1]=arr[1];
printf("%s\n",arr[1]);
printf("%p\n", &arr[1]);
printf("%p\n", ptr[1]);
printf("%p\n", &ptr[1]);
printf("%s\n",ptr[1]);
printf("%s\n", *(ptr+1));
return 0;
}
abcde
0x7ffdcbbd8daa
0x7ffdcbbd8daa
0x7ffc30ed1188
abcde
abcde
我知道ptr
是指針的陣列。解引用指針需要一個一元運算符。爲什麼我們可以取消引用ptr[1]
而不用*
?謝謝
你能否詳細說明你的問題和你的問題?你的意思是(錯誤類型)行'printf(「%s \ n」)ptr [1]);'? (將來,***複製粘貼***代碼而不是將其重寫到問題中) –
另請注意,'arr [1]'和'&arr [1]'可能指向相同的位置,但他們是不同的。 'arr [1]'等於'char *'類型的'&arr [1] [0]'。 '&arr [1]'的類型是char(*)[10]'。 –
您不是解除引用,printf()需要一個指向「%s」字符串的指針。你正在給ptr指針[1]。 – MayurK