C语言变量在内存中存储问题

来源:互联网 发布:淘宝代销产品怎么改价 编辑:程序博客网 时间:2024/04/29 14:01

在C语言中,内存可以划分为3种,堆、栈、静态存储区。

栈:就是auto变量存放区域,自动释放,在编译的时候需要知道空间大小。(如int a = 10;)

堆:一般用作开辟动态存储区,需要人工开辟,人工释放,可以在运行时开辟。(如malloc()和free()函数)

静态存储区:这个区域存放一些常量,不能改变值。(如#define NUMBER 100)


char *p = "Test string";

*p = "string is changed";

这句话本身就是错的,首先字符串不能那样赋值。p指向一个字符,而不是整个一行。

就算换成

*p = 'P';

也是不对的,因为 char *p = "Test string"; 的意思是静态存储区放入"Test string",然后再栈开辟一个指针p,指向这个字符串。

也就是说p在栈中,而其指向的字符串在静态存储区中,所以能改变p指针的指向,但是不能改变其指向的值。



0 0
原创粉丝点击