字符串字面量与指针

时间:2022-03-17 14:44:46
 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