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