字符串字面量与指针
2013-08-23 17:46 minus01 阅读(996) 评论(0) 编辑 收藏 举报1 #include <stdio.h> 2 3 int main(int argc, const char *argv[]) { 4 5 char *str, *p; int len; 6 7 str = "c program!"; 8 9 p = str; 10 11 while(*p != '\0') 12 13 p++; 14 15 len = p - str; 16 17 printf("str:%s, len:%d\n", str, len); 18 19 return 0; 20 21 }
str:字符指针变量,位于内存中的栈区;
“c program”:字符串字面量(字符串常量),用一对双引号括起来的字符序列。存储于内存中的常量区;
从本质而言,C语言把字符串字面量作为 只读 的字符数组来处理,因此 编译器会把字符串字面量看作是char *类型的指针。例如: printf(“abc”); //当调用printf函数时,会传递“abc”的地址(即指向存储字母a的内存单元的指针)
通常情况下,C语言下可以在允许使用char *指针的地方使用字符串字面量。
1 例如: 字符串字面量用于=右边赋值: 2 char *p; 3 p = "abc"; //使p指向字符串的第一个字符
1 例如:C语言允许对指针取下标,因此可以对字符串字面量取下标 2 char ch; 3 ch = "abc"[1]; //赋值后ch的值为b