C语言一个函数里是不是不能有太多变量

函数执行时,函数内的局部变量的存储单元都是在栈上的,栈有内存限制,多了会栈溢出,那么就是说一个函数不能有太多局部变量吗?那么一个大程序要处理很多变量要怎么实现,分成几个函... 函数执行时,函数内的局部变量的存储单元都是在栈上的,栈有内存限制,多了会栈溢出,那么就是说一个函数不能有太多局部变量吗?那么一个大程序要处理很多变量要怎么实现,分成几个函数? 展开
 我来答
bhtzu
推荐于2018-04-14 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4138万
展开全部
函数内的局部变量的存储有内存限制,是没错的,这个限制是堆栈的大小:64K
一般来说,你很难定义这么多变量,除非使用了大数组,在多数编译器下,int a[1000000]的定义是不可实现的,这种情况可以使用指针来解决,所以,编程中只要不使用大数组,不必考虑太多变量的问题。
解决变量多的方法,拆分多个函数是一方面,C++封装、作用域、以及指针的应用,都可以避免堆栈溢出的问题。
更多追问追答
追问
怎么用指针实现大数组呢?是用malloc在堆区申请一块内存,用指针调用吗?顺便问一下,堆区主要作用是什么啊,全局和静态变量存在静态区了,局部变量存放在栈区,代码存放在代码区了,那堆区呢?算是栈和静态区的扩展吗
追答
指针,还没有学习么?malloc和new(C++用法)都可以分配内存。
你的几个术语混着用了。。。。
栈stack中分配局部变量空间,堆区heap是向上增长的用于分配程序员申请的内存空间,也就是指针等的空间。
另外还有静态区是分配静态变量,全局变量空间的;只读区是分配常量和程序代码空间的;以及其他一些分区。
这些之中,堆,是最大的,其它都比较小,而大小限制,根据编译环境和工程设置等原因,有所不同,没有一个确定的数值,例如stack的空间,最小的4k,而VC6环境下为64k。
百度网友7c6c06fea
2013-09-24 · TA获得超过1603个赞
知道小有建树答主
回答量:817
采纳率:75%
帮助的人:149万
展开全部
一般情况下足够了,变量不能太大,比如定义一个100000的float数组等,如确实需要可以定义在外部,通过全局变量或指针操作。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
辉辉国际
2013-09-24 · 贡献了超过113个回答
知道答主
回答量:113
采纳率:0%
帮助的人:24.8万
展开全部
函数内的局部变量,函数被调用一次,放在栈里面一次,调用结束后就释放了,不用太担心这个问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lzw505498101
2013-09-24
知道答主
回答量:41
采纳率:0%
帮助的人:11.8万
展开全部
首先,C语言可以跨平台,你打算编写一个用在哪里的程序呢?电脑上? 还是芯片上? 不同的硬件的存储单元是大小和堆栈的方向是不同的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式