乐趣区

第14课-单引号和双引号

单引号和双引号
·C 语言中的单引号用来表示字符字面量
·C 语言中的双引号用来表示字符串字面量


小贴士:
·字符字面量被编译为对应的 ASCII 码
·字符串字面量被编译为对应的内存地址
·printf 的第一个参数被当成字符串内存地址
·内存的低地址空间不能在程序中随意访问


字符串的内存地址都是大于 0x08048000, 是可以随便访问的;小于 0x08048000 为低内存空间,字符串地址不能随意访问。

单引号和双引号的本质 14-1.c

include “stdio.h”

int main()
{

char* p1 = 1;
char* p2 ='1';
char* p3 ="1";
printf("%s, %s, %s",p1 ,p2 ,p3);//error

printf("\n");
printf('\n');        //error
return 0;

}
输出结果:
error
结果分析:
char* p1 = 1; 表示的是对用 ASCII 码,地址比 0x08048000 小,为低地址内存,所以报错;
char p2 =’1′;printf(‘n’);char p2 =’1′; 也是同理;

char 是一个内存地址,”” 一个字符串地址,字符串的地址为 4 个字节,程序会报错
例子 14—2:

include “stdio.h”

int main()
{

char c = ' ';
while((c == '\t') || (c == '') || (c =='\n'))
{scanf("%c",&c);
}
return 0;

}
输出结果:
t 空格 回车会一直循环 while,输入其他字符就会退出 while

·单引号括起来的单个字符代表整数
·双引号括起来的字符代表字符指针(说白了就是一段内存地址)
·C 编译器接受字符和字符串的比较,无任何意义
·C 编译器允许字符串对字符变量赋值,只能得到错误

退出移动版