标签:
学了挺久的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
标签:
原文地址:http://www.cnblogs.com/monster-prince/p/5517833.html