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

Posted litifeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符数组和字符指针用法的区别相关的知识,希望对你有一定的参考价值。

字符指针 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";

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

 

以上是关于字符数组和字符指针用法的区别的主要内容,如果未能解决你的问题,请参考以下文章

C 语言数组 ( 指针数组用法 | 菜单选择 )

字符串数组与字符指针的区别

字符数组和字符串指针区别

C语言中put()与puts()的区别?

字符串的基本操作,初始化和赋值之类的区别,和数据名是一个常量指针不可以改变和赋值(盲点众多)

字符数组和字符串指针的定义