为什么可以给指针赋值为字符串

pt1是一个指针,为什么可以赋值为字符串

从现象看,那就是“给指针赋了一个字符串”。但,在C/C++中,字符串的指针就是指向这个字符串的第一个字符的指针,所以char *p="abc"的确切意思并不是把字符串abc赋给char *型指针p,而是“创建一个常字符串'abc',并把这个字符串第一个字符(即a)的地址赋给char *型指针p"。举一反三,写常字符串"abcdef",也代表它的指针(即指向a的指针)——下面的代码可以验证:

#include "stdio.h"
int main(int argc,char *argv[]){
char *p="abcdefg",i;
for(i=0;i<7;i++)
printf("%c ","abcdefg"[i]);//这和写printf("%c ",p[i]);效果是完全一样的
printf("\n");
  return 0;
}

输出结果:

温馨提示:答案为网友推荐,仅供参考