字符数组和字符指针用法的区别

字符指针 char *p,只可接收已知的字符串字面量

字符数组 char a[100],可接收已知或未知的字符串。

原理:字符指针只能存储一个字符类型的地址,而字符串字面量表达式的返回值是:首元素首地址,所以字符指针可以获得该首地址,并且可以通过指针读取该字符串,但不能修改,因为字符串字面量都保存在只读内存区域内,不可修改。

char *p="hello";
putchar(p);  //返回‘h'
puts(p); //返回整个字符串“hello”
putchar(p[2]);  //返回’l'
p[2]='w';  //错误,不可修改
char *p1;
scanf("%s",p1); //错误p1没有指定可以空间

char型数组,是分配了相应空间的,所以可以读取,写入字符串。

char a[10],b[5][10];
scanf(" %s",a);
for(int i=0;i<5;i++){
    scanf(" %s",b[i]);   //b[i]是第i行的首元素首地址
}
char c[10]="hello";

以上写法对于字符数组都是合法的。

原文地址:https://www.cnblogs.com/litifeng/p/12348461.html