(1)C 语言中单引号用来表示字符字面量(是个数值)被编译为对应的 ASCII 码
(2)C 语言中双引号用来表示字符串字面量(是个指针)被编译为对应的内存地址
例如:'a'表示字符字面量(97),在内存中占用 1 个字节,'a'+1 表示'a'的 ASCII 码加 1,即'b'。"a"表示字符串字面量(是个指针),在内存中占 2 个字了,"a"+1 表示指针运算,指向"a"的结束符"0"。
#include <stdio.h> int main() { char* p1 = 1 ;//p1=0x0000001,内存低地址,不可访问 char* p2 = '1';//p2=0x0000031,内存低地址,不可访问 char* p3 = "1";//p3=0x008A5860,合法地址 printf("*p1=%s ", p1); //段错误,内存不可访问 printf("*p2=%s ", p2); //段错误,内存不可访问 printf("*p3=%s ", p3);//合法,*p3==1 printf(' ');//段错误,' '表示 10,即内存 0x000000A 处的内存值 printf(" ");//合法,打印换行return 0; return 0; }
参考资料:
www.dt4sw.com
http://www.cnblogs.com/5iedu/category/804081.html