字符指针与字符数组

Posted

tags:

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

学了挺久的c语言,c语言有意思的就有指针这一大块,另外就是字符串,字符指针与字符数组的区别对于初学者应该是比较难以区分的,讲讲自己的看法。

1.定义上的区别

字符数组具有固定的地址,且字符数组的名字不能更改或运算。

字符指针是一个变量,用来存储首字符的地址,且指向的字符串通常为一个常量。

char str[] = "helloworld";
str[4] = X;
printf("%s",str);

输出结果:hellXworld
char *str = "helloworld";
str[4] = X;
printf("%s",str);

输出结果:
已停止工作,windows正在检查该问题的解决方案:)

2.初始化

字符数组的初始化:

char str[]="helloworld"                                       // ok
char str[]={h,e,l,l,o,w,o,r,l,d}           //ok
char str[20];
str="helloworld";                                              //error

字符指针的初始化:

char *str="helloworld"         //ok
char *str;
str="helloworld";              //ok

3.赋值

字符数组只能对单个元素进行赋值

str[4]=X                  //ok
strcpy(str,"hello")         //ok
str="hello"                 //error

指针变量可直接运算赋值

str++                    //ok
str=“hello”             //ok

注意:字符数组本身的属性为字符指针,即char str[]="hellowolrd",其中str的类型为char *

下面附带判断字符串结尾的方法:

*str != \0           //ok
*str != NULL        //ok
*str != 0              //ok
str != NULL          //error
str[4]!=NULL        //ok

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

指针进阶 - 字符串与指针 & 数组与指针

字符数组与字符指针

字符指针与字符数组

转:字符数组与字符指针

字符指针操作字符数组出错,代码如问题补充,

字符串常量与 字符指针,字符数组