c语言进高手进 就是想问一下c语言储存的问题

2024-12-25 08:55:04
推荐回答(3个)
回答1:

chai *ps;
ps=“this is a book";
这里的“this is a book"存放在常量区。

参考下面的说明:
C中栈区 堆区 常量区 收藏
C中栈区 堆区 常量区 (转)

#include

void main()
{
char a[]="abc";栈
char b[]="abc";栈
char* c="abc";abc在常量区,c在栈上。
char* d="abc"; 编译器可能会将它与c所指向的"abc"优化成一个地方。
const char e[]="abc";栈
const char f[]="abc";栈

cout<< a << " " << b << " " << c << " "<cout<<(a==b?1:0)<}
以上程序的输出结果为
abc abc abc abc abc abc
0
1
0

一个由c/C++编译的程序占用的内存分为以下几个部分
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于
数据结构中的栈。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。
3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静
态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有
系统释放
4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放
5、程序代码区—存放函数体的二进制代码。

回答2:

这个是储存函数,引用文件问题补充:呃. 是无法把内容保存进文件里,就是information.txt文件. 你查找一下C库函数手册吧! 你想保存文本

回答3:

this is a book储存到指针变量ps所指向的内存中了,但由于ps没有赋值,所以其实是把this is a book储存到一个随机的内存中了,这是很危险的。另外chai应该是char