0%

const字符串

看代码应该比较明白,记录一下,防止忘记。也欢迎各位随时指正。

一段简单的C语言程序,关于const、字符串。

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <stdio.h>
#include <stdlib.h>

static void pp(void)
{
char str1[] = "abc";
char str2[] = "abc";
const char str3[] = "abc";
const char str4[] = "abc";
const char *str5 = "abc";
const char *str6 = "abc";
char *str7 = "abc";
char *str8 = "abc";

printf("%d\n",str1 == str2);//0
printf("%d\n",str3 == str4);//0
printf("%d\n",str5 == str6);//1
printf("%d\n",str7 == str8);//1

printf("%d\n",str6 == str7);//1
}

int getNum()
{
return 100;
}

int main()
{
int n = 90;
const int MaxNum1 = getNum(); //运行时初始化
const int MaxNum2 = n; //运行时初始化
const int MaxNum3 = 80; //编译时初始化
printf("%d, %d, %d\n", MaxNum1, MaxNum2, MaxNum3);

const char *str1 = "cbiancheng";
char *str2;
printf("str1:%s\n",str1);

str2=malloc(8);
if(str2!=NULL)
{
*str2='b';
printf("str2:%s\n",str2);
}

//char *str3 = (char *)str1;
//*str3='c';//这里会有错误

pp();

return 0;
}

运行结果

str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。