當指針P指向字符串時,P就可以代表該字符串

不知道大家有沒有這個疑問

定義一個整型指針,然後打印,結果沒問題

int a=10;
int *P1=&a;

printf("*P1=%d",*P1);
結果爲*P1=10;

定義一個字符指針,使其指向一個字符串,然後打印

#include <stdio.h>

int main()
{
        char *p="qiaochang";
        printf("p:%p\n",p);
        printf("*p:%s\n",p);
        printf("*p:%s\n",*p);
        return 0;
}

結果

test_spring_point.c: In function ‘main’:
test_spring_point.c:8:14: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’ [-Wformat=]
  printf("*p:%s\n",*p);
             ~^    ~~
             %d

將代碼改爲

#include <stdio.h>

int main()
{
        char *p="qiaochang";
        printf("p:%p\n",p);
        printf("*p:%s\n",p);
        printf("*p:%d\n",*p);
        return 0;
}

結果爲:

p:0x5587167b5744
*p:qiaochang
*p:113            113是q的ascii值

從上面的例子我們發現當定義指針使其指向字符串時,等號右邊直接是該字符串,在打印時不需要取值符號*

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章