小编fik*_*ksx的帖子

为什么带有星号和没有星号的指针变量在printf中表现不同?

我是编程新手,有些部分让我在学习指针时感到困惑.

代码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'?

c arrays pointers

-3
推荐指数
1
解决办法
493
查看次数

标签 统计

arrays ×1

c ×1

pointers ×1