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访问数组第一个元素即字符数组,不能直接赋值,只能拷贝。
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访问数组第一个元素即字符数组,不能直接赋值,只能拷贝。
相关文章推荐
- C语言基础知识之(十三):指针、指针和数组
- C++程序设计:求最大公约数和最小公倍数的算法
- 编译防火墙——C++的Pimpl惯用法解析
- C++中定义自己的头文件
- int * const p 与int const *p或者const int *p的区别
- 汉字的区码和位码怎么用C语言求出来的方法
- c++ 编译链接 相关【 原创 + 转载】
- 快速排序的C语言实现
- Java基础知识及和C语言的一些区别
- 就一个简单的大数计算
- LeetCode:ZigZag Conversion
- 通过实例浅析Python对比C语言的编程思想差异
- 简要对比C语言中三个用于退出进程的函数
- c++中的隐藏、重载、覆盖(重写)
- Effective C++ 条款24 若所有参数皆需类型转换,请为此采用non-member函数
- 对Visual Studio C++ hash_map严谨一点的测试
- C语言中的setlinebuf()、utmpname()、rewind函数使用
- Effective C++ 条款23 宁以non-member,non-friend替换member函数
- 【C/C++学院】0729-语音识别/Const关键字/字符串应用/内存分配以及处理海量数据
- C语言查看程序运行的时间