当前位置:首页 » 编程语言 » c语言中声明变量可以在函数体
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言中声明变量可以在函数体

发布时间: 2022-07-05 09:58:34

c语言中在函数名和函数体之间插入变量声明是什么用法

C89/90 编译器支持的K&R格式的C语法,参数声明跟在函数括号后。C99也支持该语法,只不过在C99中,参数声明必须显式,没有默认的int支持。另外,不用在VS上尝试编译此种语法,微软对该语法的支持应该是抛弃的(没有试过,只是依稀记得VS对C99的支持是很少)。

⑵ c语言函数声明

假设主函数main()。其他函数void fun(int a,int *b)。

关于函数定义和声明:

在代码中fun函数,有完整函数体的代码就是函数定义部分,比如void fun(int a,int *b){。。。};。

如果没有具体实现的函数体代码(也就是大括号内容),那么就是函数声明。比如void fun(int ,int *);

关于函数声明和调用:

如果fun函数定义在main代码上面。比如:

void fun(int a,int *b){。。。};

int main(){

int a=0,int b=0;

......

fun(a,&b);//这里fun定义代码在main上面,所以可以不需要声明。反之需要先写声明语句

return 0;

}

关于函数局部变量及全局变量:

简单区分:

定义在函数之外的就是全局变量,这个变量所有函数都可以直接使用,并且共用同一个地址。任意函数修改了变量值,其他函数调用也会变。

定义在函数之内的就是局部变量,局部变量只属于该函数,其他函数即使定义了同样名字的变量,这两个变量也不同地址,互不相干。

比如:

int a;//这就是全局变量,作用域下所有函数共用

int main()

{

int b;//这就是局部变量,只在本函数有效,如果想在调用fun函数时让fun也使用该变量,需要把这个变量的地址作为参数传递过去。

printf("%d",b);

return 0;

}

注意:c语言中允许局部变量和全局变量同名,但是同名的局部变量会屏蔽全局变量,实际代码避免同名。

关于函数传值和传址:

如函数void fun(int a,int *b){..........};这里形参a 和*b,分别表示一个值和一个地址

所以在调用该函数时,比如:

int main()

{

int c,d;

fun(c,&d);//这里调用就对应上面形参类型,第一个参数传递了c的值(传值),第二个参数传递了d的地址(传址),这里c和&d,叫做实参。当fun函数运行时改变了a和b指向地址的值,对应main函数中c的值不变,d的值改变。

return 0;

}

顺带一说:局部变量,在函数运行结束后会自动释放,所以想把局部变量地址作为返回值,需要用malloc函数申请。(这里看不懂可以暂时忽视)

⑶ C语言一个变量声明在函数里,初始化在for语句小括号里,那么for语句外函数里这个变量能用吗

这个地方用i是没问题的,因为i的作用域是整个f()函数,但是要注意在for循环中已经改变了i的值,希望可以帮到你。

⑷ C语言中,声明变量和初始化变量有什么作用

c语言中,变量只有先声明,才能使用,这样避免编程时产生不必要的错误,一位不同类型变量的存储格式和长度都不同,所以字节长度不同,声明变量可以让计算机知道你更需要用什么样的格式存储变量,从而高效稳定地运行程序。

C语言包含的各种控制语句仅有9种,关键字也只有32 个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能,如需此类功能,需要通过配合编译系统所支持的各类库进行编程,故c语言拥有非常简洁的编译系统。

(4)c语言中声明变量可以在函数体扩展阅读:

C语言是面向过程的编程语言,用户只需要关注所被解决问题的本身,而不需要花费过多的精力去了解相关硬件,且针对不同的硬件环境,在用C语言实现相同功能时的代码基本一致,不需或仅需进行少量改动便可完成移植,这就意味着,对于一台计算机编写的C程序可以在另一台计算机上轻松地运行,从而极大的减少了程序移植的工作强度。

与其他高级语言相比,C语言可以生成高质量和高效率的目标代码,故通常应用于对代码质量和执行效率要求较高的嵌入式系统程序的编写。

⑸ C语言变量的定义可以放在函数中任意位置吗

不可以放在函数中任意位置
C语言语法规定任意变量的定义,都必须在最开始的地方声明

⑹ C语言中怎样申明变量

任何一种编程语言都离不开变量,特别是数据处理型程序,变量的使用非常频繁,没有变量参与程序甚至无法编制,即使编制运行后的意义也不大。变量之所以重要,是因为变量是编程语言中数据的符号标识和载体。

C语言是一种应用广泛的善于实现控制的语言,变量在C语言中的应用更是灵活多变。那么变量究竟是什么呢?变量是内存或寄存器中用一个标识符命名的存储单元,可以用来存储一个特定类型的数据,并且数据的值在程序运行过程中可以进行修改。可见,变量首先是一个标识符或者名称,就像一个客房的编号一样,有了这个编号我们在交流中就可方便言表,否则,我们只可意会,那多不方便。为了方便,我们在给变量命名时,最好能符合大多数人的习惯,基本可以望名知义,便于交流和维护;其次,变量是唯一确定的对应内存若干存储单元或者某个寄存器。这些是编译器来保证的,用户一般不用费心。

程序员一旦定义了变量,那么,变量就至少可为我们提供两个信息:一是变量的地址,即就是,操作系统为变量在内存中分配的若干内存的首地址;二是变量的值,也就是,变量在内存中所分配的那些内存单元中所存放的数据。

由于程序的多样需要,我们对变量也有各种各样的要求,比如:变量的生命期,变量的初始状态,变量的有效区域,变量的开辟地和变量的开辟区域的大小等等;为了满足这些要求,C语言的发明者就设置了以下变量:

1、 不同数据类型的变量;如:char cHar, int iTimes, flaot faverage;

2、 全局变量或者叫全程变量;

3、 局部变量;

4、 静态变量: 静态全局变量和静态局部变量;关键词:static

5、 寄存器变量;关键词:register;

6、 外部变量: 关键词:extern;

C语言中,变量在内存中开辟地的大小由数据类型决定的,由于PC机中规定一个地址单元存一个字节,不同的数据类型的变量,为其分配的地址单元数是不一样的。C语言中除几种基本的数据类型外用户还可以自己定义所需要的数据类型:

1、 bool型 sizeof(bool): 1

2、 char型: sizeof(char): 1

3、 short型: sizeof(short): 2

4、 int型: sizeof(int): 4

5、 long型: sizeof(long): 4

6、 float型: sizeof(float): 4

7、 double型: sizeof(double): 8

8、 自定义型:如:

typedef struct tagMyData

{

char cHar;

int iTimes;

float faverage;

}MyDatap;

sizeof(MyDatap): 12

char szBuf[]="HELLO C&C++!";

sizeof(szBuf): 13

局部变量和全局变量是相对而言的;如下:局部变量 int itmp;

int Get_Max( const int& x, const int& y, const int& z )

{

int itmp;

if(x > y) itmp = x;

else itmp = y;

if( itmp > z ) return itmp;

else return z;

}

在函数内部说明的变量为局部变量,只有在函数执行时,局部变量才存在,当函数执行完退出后,局部变量随之消失。也就是,当函数执行完退出后,原先在函数内定义的变量现在不能用,这通常由编译器保证,它会阻止编译通过。也就是说,原来为那个局部变量分配的内存,现在已经不属于它,它再无权访问了。如要再使用这些内存单元就必须从新定义变量来申请,只有分配给的变量才可访问它。否则,就会出错,如数组越界访问。

与局部变量不同,全局变量在整个程序都是可见的,可在整个程序运行过程中,对于任何一个程序都是可用的。全局变量的说明的位置在所有函数之外,但可被任何一个函数使用,读取或者写入。如下:全局变量 int iCount, bool bForward;

int iCount; //全局变量;

bool bForward; //全局变量;

void add( void );

void dec( void );

void man(void )

{

while( iCount < 1000 && iCount > -1000)

{

add( );

dec( );

printf("COUNT:%d;\n", iCount)

}

}

void add( void )

{

if( bForward ) iCount++;

}

void dec( void )

{

if(!bForward ) iCount--;

}

可见,全局变量非常方便不同函数间数据共享,同样,任何函数在在使用数据时,都不敢保证数据是否已被修改。如果程序员无法保证这个,就尽量避免使用全局变量。

静态变量是分配在存储器中C程序所占据的数据段内, C程序运行的整个过程中一直保留,不会被别的变量占用。静态变量可以定义成全局变量或局部变量,当定义为全局变量时,在它定义的程序的整个运行期间均存在并且保持原来的存储单元位置不会改变。那么既然有了全局变量为什么还要定义全局静态变量呢?看下边的示例:

⑺ C语言中,如何定义一个变量,使其既可以在主函数中使用,也可以在子函数中使用

把变量定义在主函数之外,即把变量设置为全局的。一般我们都把变量的定义放在函数中,因此变量的范围就是在本函数中。可是如果定义在所有函数的外面,这样所有的函数中,都可以使用本变量。你可以试一下这个程序。定义一个全局变量a,在主函数中进行赋值,然后在子函数中进行输出,结果是5.#include<stdio.hint a;void func();//函数声明int main(){ a=5; func();}void func(){ printf("%d\n", a);}+++++++++++++++++++++++++++++++++++++++++++++++++++当然,除了定义全局变量这个方法,还有其他的方法,那就是指针。在子函数的参数中传递变量的地址,依然可以使用该变量,依然能够改变该变量的值。比如下面这个程序,在主函数中a的值为5,将变量a的地址传递过去,子函数将该地址中的变量的值设置为3,然后主函数输出,结果却是3.#include<stdio.hvoid func(int *b);//函数声明int main(){ int a=5; func(&a);//把变量a的地址传递过去 printf("%d\n", a);}void func(int *b){ *b=3; //将地址b中变量的值设置为3}

⑻ c语言函数中定义的变量是否只在该函数内有用

通常是的,但当调用函数时可以让它生存期更久一点。

⑼ C语言中,把变量定义在主函数之外和定义在主函数之内有什么区别

最后的值是100.
在函数体之内的i和函数体之外的i是存放在两个内存位置的,在内部能够看到的是内部生存期的。
建议你去看下变量在函数的生存期和内存中的位置,会有更深刻的理解。

⑽ C语言中函数内部声明的静态变量的在函数外可以访问吗

不可以
只有全局变量才可以
静态变量,只是里面的值不会因为函数调用结束而还原