社区
C语言
帖子详情
文字常量的生存期问题?
cxd306021
2005-07-04 12:24:21
请问文字常量的生存期是咋样?
char *Func(void)
{
char str[]="hello world";//
}
...全文
433
9
打赏
收藏
文字常量的生存期问题?
请问文字常量的生存期是咋样? char *Func(void) { char str[]="hello world";// }
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用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 释放内存。动态内存的生存
期由我们决定,使用非常灵活,但问题也最多。
[IMWeb训练营作业]vue实现自定义select下拉框组件
运行效果图: HTML: 自定义的下拉框 第二个下拉框 JS: Vue.component( "custom-select",{ //可小驼峰可烤串 data:function(){ //data为fu
【IMWeb训练营作业】之小组作业 web版豆瓣app
【IMWeb训练营作业】之小组作业 web版豆瓣app为期10天的学习转瞬即逝,这是第三次作业,为小组作业。用Vue实现一款常用的APP/网站的部分页面。 PS: 22号晚上,在群上经过大家的热烈讨论,我们决定做豆瓣app 选择豆瓣,页面比较多,可以供组员们自由选择。 再者,豆瓣近似的功能比较多,比较容易适用Vue组件。规定命名规范:采用单词,如首页为index,小组为group
【IMWeb训练营作业】vuejs【组件-下拉列表】实现
【IMWeb训练营作业】vuejs【组件-下拉列表】实现主要包括如下内容: 演示效果 任务内容 核心代码 演示效果 PC端效果 手机端效果 网上演示url http://vueimweb.oschina.mopaasapp.com/任务内容 下拉列表 组件之间传值 组件编写 核心代码 所有代码托管在 https://git.oschina.net/marknings/vuelearn1.gitv
【IMWeb训练营作业】vue.js
这几天跟着腾讯课堂里面的一门web前端课程(Vus.js框架)学习,自己也有一些收获,这篇文章主要是训练营的一个小作业。 作业大概要求是:用Vue.js框架完成一个任务列表的添加,修改以及删除。本文的Vue.js版本为v2.2.0,在Vue官网下载的。代码主要是跟着老师视频敲的,自己加了一些注释。 下面是html页面todos.html的代码。
【IMWeb训练营作业】vue demo Select组件
这是第二次作业,完成select组件ps:最近这几天在忙着参加创业比赛和广东省大学生职业规划大赛,没时间把做完,终于今天下午可以苟延馋喘下,赶紧把作业补上,毕竟坚持到今天已经是第九天。 学习什么都一样,只要坚持下去总有收获。不说那么多了,直接上效果图效果Vue组件什么是组件?组件(Component)是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装可重用的代码。在较高层面上,
C语言
70,040
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章