在这个C程序中,我声明了Pointer To Char和Char Pointer(string)。我可以看到他们的声明方式是相同的,那么他们的行动有何不同?
#include <stdio.h>
int main()
{
char c;
c='z';
// Pointer to char
char *d;
d=&c;
printf("%c",*d);
// char pointer
char *d1="karthick";
printf("%s",d1);
return 0;
}
d
和 d1
完全一样。 两者都指向一个 single char
对象;只是在 d1
的情况下,单个 char
对象是 string 中的第一个字符,而 d
指向不属于较大字符串的单个字符:
char char *
+---+
c: |'z'| <--- d
+---+
...
+---+
|'k'| <---- d1
+---+
|'a'|
+---+
|'r'|
+---+
|'t'|
+---+
|'h'|
+---+
|'i'|
+---+
|'c'|
+---+
|'k'|
+---+
| 0 |
+---+