C语言可以在栈区 or 堆区 or 全局区 存放字符串,字符串不单单是存储在全局区的。
//字符串与指针 #include<stdio.h> #include<stdlib.h> #include<string.h> void main(){ //定义一个字符串数组 //详解:字符串"12345"存储在全局区(静态区),“ buf[10] = "12345";”完成的本质上是拷贝工作 //将字符串"12345"(包括字符' ')6个字符拷贝到数组buf[10]对应的栈内存空间 char buf[10] = "12345"; //定义一个字符串数组 char buf2[] = "abcde";//本质上和buf[10]一样 //定义一个字符串指针 //详解:字符串"a1b2c3"存储在全局区(静态区),“ *p = "a1b2c3";”完成的工作本质上是给指针p赋值的工作 //将字符串"a1b2c3"存储在全局区的首地址赋值给指针p, char *p = "a1b2c3"; //在堆区内存上分配一块空间 char *p1 =(char *)malloc(sizeof(char)*100); //字符串"aaabb"存储在全局区(静态区),“strcpy(p1, "aaabb");”完成的本质上是拷贝工作 //将字符串"aaabb"(包括字符' ')6个字符拷贝到指针p1所对应的堆内存空间 strcpy(p1, "aaabb"); system("pause"); }