转义字符
一点点解释:
‘\0’表示值为0的字符,也就是空字符(null)。通常用这种形式代替0,强调某些表达式的字符属性,但其数字值为0。
关于\ddd以及\xdd 之前的说明
这些不同进制的数字按照字符形式输出,最终都会对应到十进制的ASCII码上。达到各种各样的效果。
但除了原来写的关于它的具体怎么用,还没见到太多,后续再补充咯。
//这个还是属于按照整型输出的
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#pragma warning(disable:4996)
int main()
{
printf("%d\n", strlen("c:\test\328\test.c"));
printf("%d\n", sizeof("c:\test\328\test.c"));
system("pause");
return 0;
}
(虽然这个题原来看到过一次,没想到过去不到一个月,再看到又错了)
\n 和 \r 和word 里面的软回车和硬回车有点类似 在Linux 里面和很多情况下都有一些不一样,具体还不太清楚,目前先空着。
字面转特殊
典型代表 \n \0
所有的转义字符均为一个字符长度
//用来验证以上内容
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#pragma warning(disable:4996)
int main()
{
printf("hello!\n");
printf("%d\n", sizeof("\n"));// \0 计入空间大小
printf("%d\n", strlen("\n"));// \0 不计入字符串长度
system("pause");
return 0;
}
特殊转字面
在原本的c中 ‘ ’ “ ”是有特殊含义的
‘ ’ 字符分隔符 " " 字符串界定符
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#pragma warning(disable:4996)
int main()
{
printf("\"");
printf("\'");
system("pause");
return 0;
}
无图
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#pragma warning(disable:4996)
int main()
{
char *s1 = "c:code\test.c";
char s2[] = "c:code\test.c";
printf("%s\n", s1);
printf("%d\n", strlen(s1));
printf("%d\n", strlen(s2));
printf("%d\n", sizeof(s1));
printf("%d\n", sizeof(s2));
system("pause");
return 0;
}
char *s = "c:\code\test.c"; //会报警告,系统搞不懂\c但还是会把它当成一个字符处理,只是具体什么命令不知道
printf("%d\n", strlen(s)); //12
一点其他的链接
指针大小是4字节,在32位平台
好像可以和在函数里面写的东西做一个联系吧。
在C/C++里数组作为参数时传递的实际上是指向数组第一个元素的指针,因此sizeof(str)返回的是指针的大小,即4。
//原来的意思就是看似传递参数穿的是数组,其实本质还是指针。因此更加验证,绝不能在函数内部求解数组的空间大小,不管原来有多大,一旦在函数内部求解sizeof,都是4字节。
注意以下三种形式的参数是完全等价的:
1void Func(char str[10]);
2void Func(char str[]);
3void Func(char *str);
因为传递的本质上是指针,所以维数也是不必要的。
复盘
发现自己写博客的时间越来越长,不知道是因为能想到很多相关的知识,还是什么原因。有些东西就很零碎,慢慢整理吧,知识体系化比较重要一些。
这个黄色的背景又一次让我想起风靡全网的 淡黄的长裙~,蓬松的头发 。
着实好笑。豆芽的很多歌词真的蛮好的,他的flow也很喜欢,大概是真的要当爸爸了,所以不得不考虑奶粉钱了。哈哈哈哈哈