字符(串)指针
char *p ="hello world!"; //相当于:char *p; p="hello world!"; p是字符串"hello world!"的首地址。字符串"hello world"存放在数据段。
p[0]='a'; //错误,不能修改。
printf("%s",p); //打印出字符串
printf("%c",*p); //打印出字符串的首个字符
printf("%c",p[2]); //打印出第三个字符
char a[]="hello"; //"hello"存放在数据段。在栈上创建一个数组a,然后把"hello"拷贝到数组a中。这样"hello"存了两份。
a[3]='c'; //正确。修改的是栈上的"hello",并没有修改数据段上的"hello"
二维字符数组
char c[5][10]={"how","are","you","Li","Ming"};
字符指针数组
char* p[5]={"how","are","you","li","ming"} //p[1]是一个字符指针。
void main(){
char *p[5]={"how","are","you","li","ming"};
//字符指针数组,p[1]是一个字符指针。
int i,j;
for(i=0;i<5;i++){
for(j=i;j<5;j++){
if(strcmp(p[i],p[j])==1)){
tmp=p[i];p[i]=p[j];p[j]=tmp;
}
}
}
}