这个C语言怎默写啊 不知道苹果6s总跳屏怎麽解决用函数

2014年2月 C/C++大版内专家分月排行榜第二2013年4月 C/C++大版内专家分月排行榜第二2013年3月 C/C++大版内专家分月排行榜第二2012年12月 C/C++大版内专家分月排行榜第二2012年11月 C/C++大版内专家分月排行榜第二2012年8月 C/C++大版内专家分月排行榜第二
2014年12月 C/C++大版内专家分月排行榜第三2014年5月 C/C++大版内专家分月排行榜第三2014年3月 C/C++大版内专家分月排行榜第三2013年12月 C/C++大版内专家分月排行榜第三2013年10月 C/C++大版内专家分月排行榜第三2013年9月 C/C++大版内专家分月排行榜第三2013年7月 C/C++大版内专家分月排行榜第三2013年5月 C/C++大版内专家分月排行榜第三2013年2月 C/C++大版内专家分月排行榜第三2013年1月 C/C++大版内专家分月排行榜第三2012年9月 C/C++大版内专家分月排行榜第三
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
本帖子已过去太久远了,不再提供回复功能。在c语言中如何定义一个变量
在c语言中如何定义一个变量
08-09-29 &匿名提问
直接用类型定义,比如Int a
请登录后再发表评论!
量在将变量前,先解释一下声明和定义这两个概念。声明一个变量意味着向编译器描述变量的类型,但并不为变量分配存储空间。定义一个变量意味着在声明变量的同时还要为变量分配存储空间。在定义一个变量的同时还可以对变量进行初始化。局部变量通常只定义不声明,而全局变量多在源文件中定义,在头文件中声明。局部变量在一个函数的内部定义的变量是内部变量,它只在本函数范围内有效。自动变量auto函数中的局部变量,其缺省格式是自动变量类型。例如,在函数体中int b, c=3; 和auto int b, c=3; 是等价的。自动变量是动态分配存储空间的,函数结束后就释放。自动变量如不赋初值,则它的值是一个不确定的值。静态局部变量static静态局部变量是指在函数体内声明和定义的局部变量,它仅供本函数使用,即其他函数不能调用它。静态局部变量的值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次函数调用时,该变量已有值,就是上一次函数调用结束时的值。静态局部变量在静态存储区分配存储单元,在程序的整个运行期间都不释放。静态局部变量是在编译时赋初值的,即只赋初值一次。在SDT编译器中,建议对静态局部变量赋初值,否则该静态局部变量的初值为不确定值。在其他编译器中,未初始化的静态局部变量的初值可能为零,这由具体的编译器所决定,使用前最好测试一下。寄存器变量register带register修饰符的变量暗示(仅仅是暗示而不是命令)编译程序本变量将被频繁使用,如果可能的话,应将其保留在CPU的寄存器中,以加快其存取速度。对于现有的大多数编译程序,最好不要使用register修饰符。因为它是对早期低效的C编译程序的一个很有价值的补充。随着编译程序技术的进步,在决定哪些变量应当被存到寄存器中时,现在的C编译程序能比程序员做出更好的决定。全局变量在函数之外定义的变量称为外部变量,外部变量是全局变量,它可以为本文件中其他函数所共用。全局变量都是静态存储方式,都是在编译时分配内存,但是作用范围有所不同。静态外部变量static静态外部变量只能在本文件中使用。所以静态外部变量应该在当前源文件中声明和定义。外部变量extern定义函数中的全局变量时,其缺省格式是外部变量类型。外部变量应该在一个头文件中声明,在当前源文件中定义。外部变量允许其他文件引用。下例声明了一个变量和一个结构,定义了两个变量,其中一个定义带初始化:extern int   decl1;   // this is a declarationstruct decl2{  };       // this just declares the type – no variable mentionedint     def1 = 8;   // this is a definitionint     def2;   // this is a definition函数内部函数的声明和定义多在当前源文件中完成;而外部函数通常在源文件中定义,在头文件中声明。内部函数只在当前源文件中使用的函数应该说明为内部函数。内部函数应该在当前源文件中声明和定义。若内部函数在头文件中声明,其他源文件通过包含这个头文件也可使用这个函数,但这样就失去了其做为内部函数的意义。优点:使用内部函数,可以使函数只局限于所在文件。这避免了与其他源文件中可能出现的同名函数发生冲突。例:File: function1.c#include “function1.h”static int stat_func(void);void MasterFunction(void){…rc = stat_func( );…}static int stat_func(void){   …  }外部函数对于可在当前源文件以外使用的函数,应该在一个头文件中声明。其他源文件可通过包含这个头文件或进行声明来使用这些函数(推荐用前者)。一个良好的编程习惯是在头文件中声明函数的原型。这可方便编译程序查错。定义函数时,缺省的函数类型是外部函数。如:void fun2(void); 和extern void fun2(void); 其函数类型是等价的,但前一个是定义函数,后一个是声明函数。小结编写程序,尤其是大型程序时,建议采用上文所述的方法对不同的变量、函数进行必要的声明、定义。做好这些细节上的事务,可以为您的编程、调试、移植等带来很大的方便。变量在将变量前,先解释一下声明和定义这两个概念。声明一个变量意味着向编译器描述变量的类型,但并不为变量分配存储空间。定义一个变量意味着在声明变量的同时还要为变量分配存储空间。在定义一个变量的同时还可以对变量进行初始化。局部变量通常只定义不声明,而全局变量多在源文件中定义,在头文件中声明。局部变量在一个函数的内部定义的变量是内部变量,它只在本函数范围内有效。自动变量auto函数中的局部变量,其缺省格式是自动变量类型。例如,在函数体中int b, c=3; 和auto int b, c=3; 是等价的。自动变量是动态分配存储空间的,函数结束后就释放。自动变量如不赋初值,则它的值是一个不确定的值。静态局部变量static静态局部变量是指在函数体内声明和定义的局部变量,它仅供本函数使用,即其他函数不能调用它。静态局部变量的值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次函数调用时,该变量已有值,就是上一次函数调用结束时的值。静态局部变量在静态存储区分配存储单元,在程序的整个运行期间都不释放。静态局部变量是在编译时赋初值的,即只赋初值一次。在SDT编译器中,建议对静态局部变量赋初值,否则该静态局部变量的初值为不确定值。在其他编译器中,未初始化的静态局部变量的初值可能为零,这由具体的编译器所决定,使用前最好测试一下。寄存器变量register带register修饰符的变量暗示(仅仅是暗示而不是命令)编译程序本变量将被频繁使用,如果可能的话,应将其保留在CPU的寄存器中,以加快其存取速度。对于现有的大多数编译程序,最好不要使用register修饰符。因为它是对早期低效的C编译程序的一个很有价值的补充。随着编译程序技术的进步,在决定哪些变量应当被存到寄存器中时,现在的C编译程序能比程序员做出更好的决定。全局变量在函数之外定义的变量称为外部变量,外部变量是全局变量,它可以为本文件中其他函数所共用。全局变量都是静态存储方式,都是在编译时分配内存,但是作用范围有所不同。静态外部变量static静态外部变量只能在本文件中使用。所以静态外部变量应该在当前源文件中声明和定义。外部变量extern定义函数中的全局变量时,其缺省格式是外部变量类型。外部变量应该在一个头文件中声明,在当前源文件中定义。外部变量允许其他文件引用。下例声明了一个变量和一个结构,定义了两个变量,其中一个定义带初始化:extern int   decl1;   // this is a declarationstruct decl2{  };       // this just declares the type – no variable mentionedint     def1 = 8;   // this is a definitionint     def2;   // this is a definition函数内部函数的声明和定义多在当前源文件中完成;而外部函数通常在源文件中定义,在头文件中声明。内部函数只在当前源文件中使用的函数应该说明为内部函数。内部函数应该在当前源文件中声明和定义。若内部函数在头文件中声明,其他源文件通过包含这个头文件也可使用这个函数,但这样就失去了其做为内部函数的意义。优点:使用内部函数,可以使函数只局限于所在文件。这避免了与其他源文件中可能出现的同名函数发生冲突。例:File: function1.c#include “function1.h”static int stat_func(void);void MasterFunction(void){…rc = stat_func( );…}static int stat_func(void){   …  }外部函数对于可在当前源文件以外使用的函数,应该在一个头文件中声明。其他源文件可通过包含这个头文件或进行声明来使用这些函数(推荐用前者)。一个良好的编程习惯是在头文件中声明函数的原型。这可方便编译程序查错。定义函数时,缺省的函数类型是外部函数。如:void fun2(void); 和extern void fun2(void); 其函数类型是等价的,但前一个是定义函数,后一个是声明函数。小结编写程序,尤其是大型程序时,建议采用上文所述的方法对不同的变量、函数进行必要的声明、定义。做好这些细节上的事务,可以为您的编程、调试、移植等带来很大的方便。
请登录后再发表评论!还没有帐号? 赶紧
用户版块帖子
请教高人,C51用C语言如何知道某个函数运行时间
UID:1640701
在线时间752小时
M币250专家0
在论坛看到这里的很多单片机项目都很有趣,于是萌发了重学单片机的想法,大学学计算机专业,学校开过单片机的课程,但是都是教的汇编,所以在学校的时候这门课就是混过来的,时隔十几年,看到还可以用C来写单片机程序,高级语言就不怕了,。。。由于以前都是用C#,php,python之类OOP的语言,对于定时器、中断之类的了解不是很多,但是感觉单片机这两样就是最重要的内容之一,度娘了许多资料,但是还是有点云里雾里的感觉。试着写了一个用定时器控制的计时器,仿真的时候运行11分钟,居然慢了40多秒。哪位高人能帮我解解惑。仿真图----------------------------------------------------------------------------------------------------------------------------------------------#include &REG51.H&#define DIGI_BLOCK P2 //块显示端口 #define DIGI_POS P0&&//段选择端口unsigned char count = 0;&&//中断次数计数//共阴数码管0-9,字符表unsigned char digi_tab[11] = {0x03,//0&&&&&&&&&&&&&&&&&&&&&&&&&&&&0x9f,//1&&&&&&&&&&&&&&&&&&&&&&&&&&&&0x25,//2&&&&&&&&&&&&&&&&&&&&&&&&&&&&0x0d,//3&&&&&&&&&&&&&&&&&&&&&&&&&&&&0x99,//4&&&&&&&&&&&&&&&&&&&&&&&&&&&&0x49,//5&&&&&&&&&&&&&&&&&&&&&&&&&&&&0x41,//6&&&&&&&&&&&&&&&&&&&&&&&&&&&&0x1f,//7&&&&&&&&&&&&&&&&&&&&&&&&&&&&0x01,//8&&&&&&&&&&&&&&&&&&&&&&&&&&&&0x09,//9&&&&&&&&&&&&&&&&&&&&&&&&&&&&0xfd,//- &&&&&&&&&&&&&&&&&&&&&&&&&&&&};//时间计数器数组unsigned char time[6] = {0,0,0,0,0,0};/*&&12Mhz Crystal*/void init_timer() {&&&&TMOD = 0x01;&& //模式1&&&&EA = 1;&&&&&&&&//中断允许总控制位&&&&ET0 = 1;&&&&//T0溢出执行中断&&&&TR0 = 1;&&&&//启动T0定时器&&&&TH0 = (65536 - 1;&&&&&&&&&&&&TL0 = (65536 - 1;&&&&&&&&}/*对计时数组进行+1处理,60进制递归处理。。。。reentrant(可重用关键字)*/void time_process(unsigned char pos) reentrant {&&&&time[pos]++; //个位+1&&&&&&&&&&&&if(time[pos]&9) {&&&&&&&&//个位超过9,进位&&&&&&&&time[pos] = 0;&&&&&&&&time[pos-1]++;&&&&&&&&if(time[pos-1]&5){&&&&//十位超过5,进位&&&&&&&&&&&&time[pos]=time[pos-1]=0;&&//个位,十位清零&&&&&&&&&&&&time_process(pos-2);&&//升位+1&&&&&&&&&&&&&&&&&&&&}&&&&}} void timer() interrupt 1 {&&&&TH0 = (65536 - 1;&&&&&& //100us H&&&&TL0 = (65536 - 1;&&&&&& //100us L&&&&count++;&&&&//定时中断100次100us×100=1s&&&&if (count == 100) {&&&& //&&&&&&&&time_process(5);&&&&&&&&count = 0;&&&&}}/*数码管显示时间数组中存放的时间值*/void display() {&&&&unsigned char lp = 0;&&&&unsigned char pos = 0x01;&&&&for (;lp&6;lp++){&&&&&&&&DIGI_POS=&&&&&&&&DIGI_BLOCK = 0&&&&&&&&DIGI_BLOCK = digi_tab[time[lp]];&&&&&&&&&&&&&&&&if(lp==1||lp==3){&&&&&&&&&&&&pos &&= 1;&&&&&&&&&&&&DIGI_POS =&&&&&&&&&&&&DIGI_BLOCK = 0&&&&&&&&&&&&DIGI_BLOCK = digi_tab[10];&&&&&&&&}&&&&&&&&&&&&&&&&pos = pos && 1;&&&&&&&&}}void main() {&&&&init_timer();&&&&&&&&while(1){&&&&&&&&display();&&&&}}**********************************************************************************************************************************设定的是 100us溢出,每100次溢出认定为1s,然后对存放时间的数组进行+1处理,采用递归操作,应该就是这个递归处理的时候拖慢了时间/*对计时数组进行+1处理,60进制递归处理。。。。reentrant(可重用关键字)*/void time_process(unsigned char pos) reentrant {&&&&time[pos]++; //个位+1&&&&&&&&&&&&if(time[pos]&9) {&&&&&&&&//个位超过9,进位&&&&&&&&time[pos] = 0;&&&&&&&&time[pos-1]++;&&&&&&&&if(time[pos-1]&5){&&&&//十位超过5,进位&&&&&&&&&&&&time[pos]=time[pos-1]=0;&&//个位,十位清零&&&&&&&&&&&&time_process(pos-2);&&//升位+1&&&&&&&&&&&&&&&&&&&&}&&&&}} 有高手能帮我计算一下一个函数运行需要多长时间吗!虽然C不如汇编能那么精确,但学习嘛,就是要多折磨自己的,是吧。呵呵。。。。想想以前做项目也是一个问题挠头半天,别人一句话也许就豁然开朗。。。。期待高人。。。。。
本文内容包含图片或附件,获取更多资讯,请
后查看;或者
成为会员获得更多权限
UID:173760
在线时间908小时
M币3566专家2
keil里面debug时可以看到,你百度下有详细说明的。
UID:1640701
在线时间752小时
M币250专家0
回 zjalone 的帖子
:keil里面debug时可以看到,你百度下有详细说明的。 ( 10:18) 是吗,我去搜搜看
UID:574586
在线时间982小时
M币718专家3
可以用循环解决的用什么递归,又不是写脚本。
UID:805500
在线时间4405小时
M币4629专家85
软件仿真是不准的,看Keil生成的汇编,计算指令时间,。还有,在us级的中断中,调用中断的时间是不可忽略的,
UID:1640701
在线时间752小时
M币250专家0
回 era 的帖子
:可以用循环解决的用什么递归,又不是写脚本。 ( 10:53) 之前也想过用循环,可是脑袋好像转不过来,习惯性的用了递归。。。。我也知道这个很耗费宝贵的CPU资源
UID:574586
在线时间982小时
M币718专家3
keil的话,可以产生汇编文件,然后自己统计消耗的时钟周期,加上函数调用开销,差不多能估算一段程序的执行时间。
UID:38583
在线时间958小时
M币507专家11
1、单片机内存小,慎用递归。2、time_process只考虑了分、秒的60进制,没有考虑到小时的12或24小时进制,建议直接使用变量计算时间,后面显示用/10、%10的方法得到十位和个位。3、display中DIGI_BLOCK = 0应放在DIGI_POS=前,以消除拖影。4、display中,执行DIGI_BLOCK = digi_tab[time[lp]]显示之后应该短暂延时,否则实际显示时间很短,会看不清。5、定时中断时间注释错误,定时时间间隔应为10ms。&&&&&&&&
精彩回帖,十分感谢提出的这些改进。。。
UID:805500
在线时间4405小时
M币4629专家85
回 era 的帖子
Keil设置断点,进行调试就可以获得大致时间。
UID:1640701
在线时间752小时
M币250专家0
精彩回帖,十分感谢提出的这些改进。。。
访问内容超出本站范围,不能确定是否安全
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
您目前还是游客,请
&回复后跳转到最后一页
Code by , Time now is:11-07 17:31, Total 0.105990(s) query 11,
Gzip enabled&如何用C语言求解三角函数方程【c语言吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:554,338贴子:
如何用C语言求解三角函数方程收藏
举个小例子tan(X)/cos(X) - C = 0 (其中,C为常量)求X值。
X的解要在(0°,45°)之间#include"math.h"我刚开用的方法是牛顿的迭代法(行不通)所以问问高手们
怎么写这一段。
上市公司达内c语言,打造专为培养精通Unix和windows双系统开发c语言工程师c语言,指定c语言名师授课,让您精通应用极其&广泛&,&流行&的编程语言.
为什么没有人回复啊?真晕啊
tan(X)/cos(X) - C=sin(X)/cos^2(X)-C=sin(X)/(1-sin^2(X))-C=0∴sin(X) - C(1-sin^2(X))=0Csin^2(X)+sin(X)-C=0这是一元二次方程,把求根公式直接敲进代码求的sin(X),再用sin的反三角函数
math.h里计算的是弧度还是度数?
登录百度帐号推荐应用

我要回帖

更多关于 不知道函数怎么拟合 的文章

 

随机推荐