C语言表示字符串

C语言表示字符串

其实在C语言中,没有真正的字符串类型。但是有字符串数组。

当我们想申明一个字符串变量时,大体上有下面两种方法:

1
2
3
4
5
char str[] = "hello";
char *p = "hello";

// str[]:它定义的是一个字符串数组变量。可以通过 str[0] = 'A' 修改值。
// *p:它定义的是一个指针变量。不能通过 *(p) = 'A' 修改值。

当sizeof的时候,有区别。但是strlen都相同,注意结尾的\0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <cstring>
#include <cstdio>
#include <iostream>

int main() {
const char* c1 = "hello!1+"; // c1是指向常量的普通指针
char* c2 = "hello!2+"; // c2是普通指针
const char c3[] = "hello!3"; // c3是指向常量的常量指针
char c4[] = "hello!4"; // c4是常量指针

printf("%s, sizeof = %lld, len = %lld\n", c1, sizeof(c1), strlen(c1));// sizeof是指针的长度
printf("%s, sizeof = %lld, len = %lld\n", c2, sizeof(c2), strlen(c2));// sizeof是指针的长度
printf("%s, sizeof = %lld, len = %lld\n", c3, sizeof(c3), strlen(c3));// sizeof是字符串的长度
printf("%s, sizeof = %lld, len = %lld\n", c4, sizeof(c4), strlen(c4));// sizeof是字符串的长度

// *c1 = 'A'; // 报错
// *c2 = 'A'; // 报错
// *c3 = 'A'; // 报错
*c4 = 'A';

printf("%s, sizeof = %lld, len = %lld\n", c1, sizeof(c1), strlen(c1));// sizeof是指针的长度
printf("%s, sizeof = %lld, len = %lld\n", c2, sizeof(c2), strlen(c2));// sizeof是指针的长度
printf("%s, sizeof = %lld, len = %lld\n", c3, sizeof(c3), strlen(c3));// sizeof是字符串的长度
printf("%s, sizeof = %lld, len = %lld\n", c4, sizeof(c4), strlen(c4));// sizeof是字符串的长度

system("pause");
}

注意上述代码中的常量指针和指向常量的指针。

经常搞混它们,还是得记录一下!


C语言表示字符串
http://example.com/2022/09/08/C语言表示字符串/
作者
ZYUE
发布于
2022年9月8日
更新于
2022年9月8日
许可协议