社区
C语言
帖子详情
为什么局部字符数组非要使用static关键词修饰呢?
sr388
2001-08-09 10:27:52
static char myname[100];
如果这句定义在函数中,那myname就是一个局部字符数组,书上说局部字符数组必须使用static关键词修饰。如果这句定义在所有函数外,那它就是一个全局字符数组,不必使用static修饰,因为全局变量本来就侟储在静态内存中!为什么字符数组非要存储在静态内存中呢?静态内存到底是那块区域?那位朋友能图解说明一下,小弟感激不尽!
谢谢!
...全文
373
11
打赏
收藏
为什么局部字符数组非要使用static关键词修饰呢?
static char myname[100]; 如果这句定义在函数中,那myname就是一个局部字符数组,书上说局部字符数组必须使用static关键词修饰。如果这句定义在所有函数外,那它就是一个全局字符数组,不必使用static修饰,因为全局变量本来就侟储在静态内存中!为什么字符数组非要存储在静态内存中呢?静态内存到底是那块区域?那位朋友能图解说明一下,小弟感激不尽! 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
SCUM
2001-08-10
打赏
举报
回复
差不多
sr388
2001-08-10
打赏
举报
回复
牧童、浮躁的菜虫,分已经给了,谢谢
sr388
2001-08-10
打赏
举报
回复
vcmfc(浮躁的菜虫)你说对了,我确实正在看《Programming Windows》,你的回答令我满意,但是我要如何才能把分给你,我不会给分,不好意思
Belle
2001-08-10
打赏
举报
回复
up的加在一起就是了
keiga
2001-08-10
打赏
举报
回复
不加static变量存在堆栈中
加static变量存在内存数据区中
mengliu
2001-08-10
打赏
举报
回复
另加,如果不是static修饰,每次函数返回后,该数据将不存在了,因为其所在的内存相当与释放了。
vcmfc
2001-08-10
打赏
举报
回复
如果你把它放到函数之外,任何函数都可以修改它,而放到函数内,只有函数内可以修改。
vcmfc
2001-08-10
打赏
举报
回复
如果你把它放到函数之外,任何函数都可以修改它,而放到函数内,只有函数内可以修改。
vcmfc
2001-08-10
打赏
举报
回复
楼上两位没有理解发贴者的意思,你的意思是,如下代码:
void f()
{
static char myname[100];//是不是说这里为什么要放static是不是????
....
}
你是不是在看《Programming Windows》?,我说说它的含义:
1.myname不是局部变量,正如zgce(牧童) 所说的,它是静态数据。
2.放入函数的意义是:我的这个myname,只能在f();使用,虽然它是static变量,但它的作用域是属于f();函数的,在这个函数之外是不能使用的。
phis
2001-08-10
打赏
举报
回复
说得好,说得对,给分!
牧童027
2001-08-09
打赏
举报
回复
我没有听说过局部字符数组非要放在静态数据区的说法呀?!静态数据区就是DS,按8086的规定,所有的程序所使用的内存都分为四个段,代码段CS、堆栈段SS、数据段DS、附加段ES。在C里没有用Static修饰的变量都是在运行时SS上分配的一用完就会被Delete,用它修饰的就是在程序一开始就在DS上分配的一直到程序结束才会Delete。
为什么
局部
字符数组
必须
使用
static
关键词
修饰
void f() {
static
char mybuff[100]; //这里为什么要放
static
?? .... } mybuff是
static
修饰
的
局部
变量(把
局部
变量改变为静态变量后是改变了它的存储方式即改变了它的生存期),不加
static
的变量存在堆栈中,加
static
变量存在内存数据区中,如果不是
static
修饰
,每次函数返回后,该数据将不存在了,因为其所在的内存相
C函数中返回
字符数组
原文 C函数中返回
字符数组
,CSDN同步发布。 转载请注明出处,谢谢! 内容简介 在阅读本篇文章之前,建议大家看一下下面2篇文章: 不见得你会计算C字符串长度 双宿双飞的 malloc 和 free 这篇文章主要分享两个点: 1、为什么作为
局部
变量的
字符数组
不能直接返回,而字符指针却可以? 2、当
字符数组
是
局部
变量的时候,函数如何返回它? 3、
字符数组
(char [])和字符指针(char...
c函数中返回字符串数组、char[]和char*的区别与转换(详细)
文章目录一、字符指针可以返回,而作为
局部
变量的
字符数组
不能直接返回的原因二、如何返回
局部
变量的
字符数组
1、
使用
static
2、
使用
malloc3、全局变量4、返回形参指针变量三、
字符数组
与字符指针的区别相同点不同点小结四、
字符数组
和字符指针的转换char [] 转 char *char*转char[] 参考博客:c函数中返回字符串数组 一、字符指针可以返回,而作为
局部
变量的
字符数组
不能直接返回...
static
的作用
static
是静态的意思,可以用于
修饰
变量和函数。在c语言中,其有三个作用,(1)存储区域属于静态存储区 ,改变变量的生存周期,如
局部
变量变成静态
局部
变量。(2)初始化默认为0,例如给一个数组或者
字符数组
初始化0时,省去工作,这功能得益于其存储变变量的静态存储区,默认初始化为0。(3)作用范围,只在本地的源文件中起作用,相对于全局变量(如果在另一个源文件中
使用
,需要在另一个源文件中用extern
【C语言必备知识 2】(数组以及
static
详解)
超级无敌详细的C语言干货,进来就跟沙漠一样,因为太干了
C语言
69,713
社区成员
243,220
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章