社区
C语言
帖子详情
文字常量的生存期问题?
cxd306021
2005-07-04 12:24:21
请问文字常量的生存期是咋样?
char *Func(void)
{
char str[]="hello world";//
}
...全文
393
9
打赏
收藏
文字常量的生存期问题?
请问文字常量的生存期是咋样? char *Func(void) { char str[]="hello world";// }
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
seamine
2005-07-04
打赏
举报
回复
全局变量是从定义开始到文件结束
/*文件名Main.c*/
#include <stdio.h>
char Title[]="Note Book";//这里开始
void main();
{
}//这里结束
wxiaolanzhuw
2005-07-04
打赏
举报
回复
和变量的生存期一样
晨星
2005-07-04
打赏
举报
回复
char *Func(void)
{
char str[]="hello world";//
}
这个定义及初始化语句会把文字常量“hello world”的内容拷贝到字符数组str中,所以函数退出后,虽然文字常量还存在于,但你却没法引用它,而str中的副本却随着Func函数的退出而释放了。
再需要的情况下:还是这样好些:
char *Func(void)
{
char* str="hello world";//
return str;
}
指针str始终指向静态存储区文字常量的地址,所以不怕函数退出。
seamine
2005-07-04
打赏
举报
回复
局部变量是从定义开始到块结束,例如
char *Func(void)
{
char str[]="Hello World"; //从这开始
}
hongfeeling
2005-07-04
打赏
举报
回复
不清楚呀
humanity
2005-07-04
打赏
举报
回复
Java 中 "sdfsdf" 出生后,总在那儿, 直到进程退出. 你每次 String a="sdfsdf" JVM 就查找这个是不是已经存在,找到就给你, 没有找到就创建一个给你.
因为字面量太特殊了, 存在就不可以修改.
C++ 我觉得也差不多 , 哈哈, 不懂 C++.
neverfor
2005-07-04
打赏
举报
回复
我记得字面量好像是作为 static类型数据分配存储的。记得不是很清楚了。
cxd306021
2005-07-04
打赏
举报
回复
to firstdreamer(=&穷则独善其身&=) :文字常量到底分配在哪里?
TO: seamine(蓝色梦想) 全局变量从定义开始,作用于该程序的所有文件,而非它所在的文件.
TO: steedhorse(晨星) 文字常量存于静态存储区,确定吗?哪里有相应帮助?
char *Func(void)
{
char* str="hello world";//
return str;
}
指针str始终指向静态存储区文字常量的地址,所以不怕函数退出,但是当函数退出时, str已被释放,此时为未定值,所以这样做是错误的。
最后我的问题是不是文字常量的生存期,作用域和存储区,分别是啥?
firstdreamer
2005-07-04
打赏
举报
回复
希望这个对你有所帮助,内存分配方式有三种:
(1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的
整个运行期间都存在。例如全局变量,static 变量。
(2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函
数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集
中,效率很高,但是分配的内存容量有限。
(3) 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc 或new 申请任意
多少的内存,程序员自己负责在何时用free 或delete 释放内存。动态内存的生存
期由我们决定,使用非常灵活,但问题也最多。
C语言二级辅导
- **
生存期
**:变量存在的时间 - **作用域**:变量可被访问的区域 - 全局变量:整个程序范围内都可访问 - 局部变量:仅在定义它的函数或复合语句内部可访问 ##### 2.4 运算符 1. **基本
问题
** - C语言支持...
Access数据库程序设计VisualBasicPPT课件.pptx
变量则是程序执行中值可变的量,需要先声明并命名,其作用域和生命周期影响着变量的可见性和
生存期
。表达式则涉及算术、字符串连接、关系和逻辑运算,例如,算术运算符包括加(+), 减(-), 乘(*), 除(/), 指数(^)和...
java String的深入理解
堆的优势是可以动态地分配内存大小,
生存期
也不必事先告诉编译器,因为它是在运行时动态分配内存的。但缺点是,由于要在运行时动态分配内存,存取速度较慢。 栈和堆的比较 栈的优势是,存取速度比堆要快,仅次于...
ISOIEC 14882:2014
##### 3.8 对象
生存期
解释了C++对象从创建到销毁的整个生命周期管理。 ##### 3.9 类型 详细介绍了C++中的各种数据类型,包括基本类型、复合类型等。 ##### 3.10 左值与右值 区分了左值(可作为赋值目标的表达式)...
堆、栈、
生存期
的区别
经查阅资料得知堆栈与内存分布和
生存期
以及释放方式有关,首先我们先看一下内存分布看一下堆栈的基本概念。 提示:以下是本篇文章正文内容,下面案例可供参考 一、c++内存分布 c++编译时分为5大存储区: 1.堆区 2. ...
C语言
70,020
社区成员
243,265
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章