char ∗s 只是一个保存字符串首地址的指针变量
char a[] 是许多连续的内存单元,单元中的元素为char
int main() {
char a[] = "hello";
printf("%s\n", a); // hello
printf("%c %c\n", a[0], a[1]); // h e
// printf("%s\n", *a); // 报错
printf("%c %c\n", *a, *(a+1)); // h e
printf("%p %p %p\n", a, &a, &a[0]); // 输出字符h的地址(都相同)
printf("%p %p\n", a + 1, &a[1]); // 输出字符e的地址
printf("--------\n");
char *s = a;
printf("%s\n", s); // hello
printf("%c %c\n", s[0], s[1]); // h e
//printf("%s\n", *s); // 报错
printf("%c %c\n", *s, *(s+1)); // h e
printf("%p\n", s); // 输出字符h的地址
printf("%p\n", s + 1); // 输出字符e的地址
printf("--------\n");
/*
char ∗s 只是一个保存字符串首地址的指针变量
char a[] 是许多连续的内存单元,单元中的元素为char
*/
printf("%d\n", int(sizeof(a))); // 6(即h,e,l,l,o,\0所占的字节数)
printf("%p\n", &a + 1); // 在 h,e,l,l,o,\0 之后位置的地址
printf("%d\n", int(sizeof(s))); // 8 (在64位平台中,指针默认为8字节)
}
输出: