ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

DAY 03.2,学习字符

DAY 03.2,学习字符 今天进入了C语言的字符学习感觉信息量巨大不知道前辈们在工作中是查表还是都背下来了呢一、关键字今天老师讲了关键字比如int、if、return。它们叫做保留字或者关键字有特殊的含义。它们都是留给C语言自己用的我们不能自己创建。在给变量起名字的时候绝对不能和关键字重名表中列了32个关键字。老师说不用死记硬背常用的后期慢慢就熟了。我决定先把int、char、return、if记住其他的以后遇到再说二、字符与 ASCII 密码本键盘上敲出来的字母、符号在电脑眼里根本不是“文字”而是一堆二进制数字为了让全世界电脑都有个统一标准就有了ASCII编码表。今天老师要求记住几组特殊数据A到Z是 65 到 90。a到z是 97 到 122。大小写对应的 ASCII 码差值永远是32这简直是加密解密初级密码学数字字符0到9是 48 到 57。换行符\n的 ASCII 值是 10。0 到 31 是不可以打印出来的字符。易混点数字0和字符0根本不是一回事数字0就是数值 0而字符0在内存里存的是 ASCII 值 48。三、字符串后来讲到了字符串。用双引号括起来的一串字符比如abcdef就叫字符串用%s来打印。现在已知的占位符%d(整数)、%c(字符)、%f(小数)、%s(字符串)。一个非常特殊的知识点C语言字符串的末尾隐藏着一个极其重要的字符\0反斜杠0。它就是字符串的结束标志。为了搞懂这个我用VS的调试功能做了个对比实验cchar arr1[] abc; // 字符串赋值 char arr2[] {a, b, c}; // 逐个字符赋值在监视窗口里我震惊地发现arr1的长度是4里面有a、b、c还有第四个元素0 \0。arr2的长度是3只有a、b、c没有\0。接下来运行后当使用printf(%s\n, arr1);时输出了abc但使用printf(%s\n, arr2);时输出了abc烫烫烫烫烫烫...哈哈哈哈哈哈哈哈哈因为printf用%s打印时是个“不知停歇的机器”它必须读到\0才肯停下来。arr1有\0挡着顺利结束arr2没有\0它直接冲出了数组边界一直往后读内存里的垃圾数据直到偶然遇到一个\0才停下这就导致了乱码。 今日总结碎碎念单引号是字符双引号是字符串字符串末尾自带隐藏\0用{}手动初始化字符数组时如果当字符串用一定要记得手动补个\0不然会疯狂输出乱码。今天的知识点很底层但感觉非常踏实。从看不见摸不着的概念到通过调试窗口亲眼看到内存里的\0这种感觉太有成就感了明天继续加油以及今天总算建立了写代码的时候要先写框架的好习惯。
返回列表