我是编程新手,有些部分让我在学习指针时感到困惑.
代码1:
int main()
{
char string[]="hello";
char *my_pointer=string;
printf("first character is %c", *my_pointer);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:第一个字符是h
代码2:
int main()
{
char array_of_words[]="one\0two\0three";
char *my_pointer=array_of_words;
printf("%s \n",my_pointer);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:一
问题:
我在这里混淆,第一个代码中的printf函数部分使用星号符号表示指向内部指针(my_pointer),它是变量字符串的地址,引用指向内存地址的数组的指针字符串.数组中的第一个单词"hello".我的理解是真的吗?
当我在printf中更改%c时("第一个字符是%c",*my_pointer); 到%s,程序崩溃了.我想知道为什么我不能使用%s,如果我不使用printf中的my_pointer中的星号("第一个字符是%c",my_pointer),有什么不同?
在第二个代码中,my_pointer变量在{printf("%s \n",my_pointer);}中没有使用星号(*).在这段代码中my_pointer是指array_of_words变量的地址还是my_pointer里面的内容?以及为什么输出是'一'而不是'o'?