您的位置:首页 > 编程语言 > C语言/C++

C语言基础知识之(十四):指针和字符数组、字符串数组

2015-08-30 20:14 417 查看
1、定义字符数组存储字符串
char str[ ] ="iPhone";//一维字符数组,末尾含有’\0’字符。
定义一个字符指针指向字符数组
char *p = str;
使用指针p访问字符
for (int i = 0; i< 7; i++) {
printf("%c ", p[i]);
}
使用指针p打印字符串
printf("%s\n",p);//p = str
printf("%s\n",str);

2、定义指针,指向字符
char *str ="iPhone";//指针str存储的地址存储常量“iPhone”。
使用指针输出字符,读取了常量”iPhone”.
for (int i = 0; i< 7; i++) {
printf("%c ", str[i]);
}
输出字符串
printf("%s\n",str);
又如:
char *b ="iPad";"iPad"在常量区
指针b指向常量区的字符串
b[0] = 'I'; *(b+0) ='I';//只能读取,不能赋值。此式不成立。

char a[] ="iPhone";//字符数组
a是数组,存储在栈区,可以修改和读取存储单元中的数据。
“iPhone” 字符串常量,存储在常量区,常量区的数据不能修改。
说明:
指向数组的指针可以修改和读取数组元素;指向常量字符串的指针只能读取数组元素。

3、指针数组:数组中的元素都是指针

char * names[3] ={"zhangsan", "lisi", "wangwu"};// 字符串指针数组
names的本质是一维数组(数组中存储了3个char * 类型的指针)
names存储的数组元素是字符型指针char *(字符指针指向了常量字符串)
printf("%s\n",names[0]);
names[0] ="zhaoliu"; // 第一个字符指针,指向新的字符串,指针重指向
打印指针
for (int i = 0; i< 3; i++) {
printf("%s ", names[i]);
}

4、二维数组存储多个字符串
char names[3][20] ={"zhangsan", "lisi", "wangwu"};

names本质是二维数组
names存储的数组元素是字符数组(字符数组中存储的是字符串,拷贝自常量字符串)
printf("%s\n",names[0]);
strcpy(names[0],"zhaoliu");
printf("%s\n",names[0]);//names访问数组第一个元素即字符数组,不能直接赋值,只能拷贝。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: