c程序设计语言阅读笔记(二)字符指针和字符数组
来源:互联网 发布:阿里星球windows 编辑:程序博客网 时间:2024/05/22 12:58
话不多说,直接见代码:
int main(){ char p[] = "abcdef"; p[0] = 'c'; for (int i = 0; p[i]!='\0'; i++) { printf("%c ", p[i]); }//这的打印输出“abcdef” char *p1 = "abcdef"; printf("%c",p1[0]);//这的打印是“a” p1[0] = 'c';//代码运行到这会出错,报错大概意思就是不能写入。 for (int i = 0; p1[i]!='\0'; i++) { printf("%c ", p1[i]); } return 0;}
接下来我们来分析哈这段代码有什么问题:
“abcdef”是一个字符串常量(注意这个词)。当你使用
char p[] = "abcdef";
时候,相当于将这个字符串常量的值,赋给了一个新的char数组,而数组在定义过程中,计算机会自动给其分配一段7个字节大小的内存(字符串尾部有个‘\0’),而数组名p指向的是这段内存的开始。
而当你使用:
char *p1 = "abcdef";
的时候,只是将p1指针指向了存储“abcdef”这串字符串常量的内存的开始,而正因为是个字符串常量,常量是不能更改的,当你用赋值语句对其进行赋值的时候,会出现错误。
练习5-3至5-5:
/*可怕的错误实现,对指针的理解不清晰!char * strcat(char *s, char *t) {//将t指向的字符串复制到s指向的字符串尾部,返回值为s if (t==NULL)//是否有必要呢 { return s; } char *tmp=s; while (*tmp) { tmp++; } tmp = t;口怕的错误= = return s;}*/
未完待续
0 0
- c程序设计语言阅读笔记(二)字符指针和字符数组
- C语言字符指针和字符数组
- 11.17C程序设计语言---字符指针与函数
- C 字符数组 字符指针
- 《C程序设计语言》--字符数组的应用
- C程序设计语言--指针与数组(二) 指针数组 数组指针 函数指针 指针函数
- 字符指针和字符数组
- 字符指针和字符数组
- 字符指针和字符数组
- 字符数组和字符指针
- 字符指针和字符数组
- 字符数组和字符指针.....
- 字符数组和字符指针、
- 字符数组和字符指针
- 字符数组和字符指针
- 字符数组和字符指针
- 字符指针和字符数组
- 字符指针和字符数组
- NYOJ:845无主之地
- Oracle -- DBA
- 常见算法及问题场景——线性规划
- 简单封装okhttp
- form 表单的action参数问题
- c程序设计语言阅读笔记(二)字符指针和字符数组
- 【Github教程】史上最全github使用方法:github入门到精通之三
- ASP.NET4.6与APS.NET core1.0
- JAVA 关键字和保留字
- xcode的ARC和MRC切换
- android应用程序如何调用支付宝接口
- 线性表的学习总结
- scala方法和函数的区别
- linux命令 tar