社区
新手乐园
帖子详情
请教:C和指针上面的题
Ubunman
2012-08-24 11:40:44
#include<stdio.h>
int func(void)
{
static int counter=1;
return ++counter;
}
int main()
{
int answer;
answer=func()-func()*func();
printf("%d\n",answer);
}
我要的是geany工具,操作系统是linux。
为什么编译运行以后答案是:-10
求各位大神给出详细解释,我是C新手,太简单的解释还要再问你们
...全文
89
10
打赏
收藏
请教:C和指针上面的题
#include int func(void) { static int counter=1; return ++counter; } int main() { int answer; answer=func()-func()*func(); printf("%d\n",answer); } 我要的是geany工具,操作系统是linux。 为什么编译运行以后答案是:-10 求各位大神给出详细解释,我是C新手,太简单的解释还要再问你们
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
孤雨
2012-08-25
打赏
举报
回复
因为count是static定义的 第一次返回2 即count==2
再调用函数count又自增1 此时count==3
然后第三次调用count == 4
所以answer=2-3*4
huangdancs
2012-08-25
打赏
举报
回复
原因就是在这个语句上 static int counter=1;
static变量存储在静态内存中,所以每次 ++counter操作都是在原来counter值得基础上进行的。
answer=func()-func()*func(); // 2-3*4=-10
huangdancs
2012-08-25
打赏
举报
回复
原因就是在这个语句上 static int counter=1;
static变量存储在静态内存中,所以每次 ++counter操作都是在原来counter值得基础上进行的。
answer=func()-func()*func(); // 2-3*4=-10
huangdancs
2012-08-25
打赏
举报
回复
原因就是在这个语句上 static int counter=1;
static变量存储在静态内存中,所以每次 ++counter操作都是在原来counter值得基础上进行的。
answer=func()-func()*func(); // 2-3*4=-10
Ubunman
2012-08-25
打赏
举报
回复
[Quote=引用 4 楼 的回复:]
提示我回复过了 怎么显示不了
[/Quote]
我看你回复了,却看不见,不知道为什么。
已经明白了,谢谢
xcyl
2012-08-25
打赏
举报
回复
提示我回复过了 怎么显示不了
kingkeven
2012-08-25
打赏
举报
回复
count是临时变量,当return的时候,以将变量回收,应该是传不值的???
[Quote=引用 3 楼 的回复:]
因为static有记忆功能 只初始化一次 后面的调用中都会在上一次基础上变化 func()-func()*func();第一次为2 第二次得3 第三次为4 所以2-3*4=-10
[/Quote]
SKATE11
2012-08-24
打赏
举报
回复
因为static有记忆功能 只初始化一次 后面的调用中都会在上一次基础上变化 func()-func()*func();第一次为2 第二次得3 第三次为4 所以2-3*4=-10
Ubunman
2012-08-24
打赏
举报
回复
为什么提示有回复却看不见呢???
xcyl
2012-08-24
打赏
举报
回复
静态局部变量在程序执行到该对象的声明处时被首次初始化,以后的函数调用不再进行初始化
静态局部变量保存在全局数据区,而不是保存在栈中,每次的值保持到下一次调用,直到下次赋新值
这个运行结果是
answer = 2 - 3 * 4;
0x00000000内存不能为read修复工具
通过
上面
的几个例子,可以看到,出现故障的原因有好多种,下面列出已经提到和有可能发生的原因,方便查阅。 问
题
产生原因原因--解决方法 内存条坏了--更换内存条 双内存不兼容--使用同品牌的内存或只用一条...
C:知识点:高级
指针
:行
指针
例如 int (*q)[4] ; 双
指针
例如:int **s;
上面
定义定义了行
指针
q,并定义时直接赋值,等价于 int a[5][10],(*q)[10]; q=a; 行
指针
是为了配合二维数组才使用的,没有二维数组,用不到行
指针
。 如果所有操作都在主函数里,没有必要使用行
指针
,因为用数组...
c语言
指针
的经典问
题
,
请教
指针
运用问
题
。c语言入门经典第7章例
题
13
题
想了两天还是不清楚...
c语言入门经典(第4版)例
题
7.13
题
,红线的部分想了两天一直不清楚以下为全部代码/*Program7.13Generalizingstringinput*/#include#include#includeconstsize_tBUFFER_LEN=128;/*Lengthofinputbuffer*/constsize_t...
最全的C语言试
题
总结
C语言终极面试宝典_C语言面试必 C语言 第一部分:基本概念及其它问答
题
1、关键字static的作用是什么? 这个简单的问
题
很少有人能回答完全。在C语言中,关键字static有三个明显的作用: 1). 在函数体,一...
C语言面试
题
大汇总
JavaScript 教程 static有什么用途?(请至少说明两种) 1.限制变量的作用域 2.设置变量的存储域 7. 引用与
指针
有什么区别? 1) 引用必须被初始化,
指针
不必。 ...9. 全局变量和局部变量在内...
新手乐园
33,311
社区成员
41,784
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章