C语言简单的全局变量定义问题

请问为什么我在函数外面定义了全局变量,变量的值没有改变?图片说明

4个回答

你这个问题是因为你在add这个函数里定义了一个形参x,与全局变量x冲突,所以编译器自动屏蔽全局变量x,也就是说这个形参x和全局变量x不是同一个变量,你对形参做的一切改动在其他函数里都是看不到的。其实你既然已经定义了全局变量,那add函数就根本不需要再把x的值传进去,直接执行x=x+3即可,因为x是全局变量。图片说明

jd8052655
jd8052655 你的回答最准确,谢谢你!O(∩_∩)O
接近 4 年之前 回复

你的代码里 2-6行的代码必需放在主函数main方法里,否则像你这样写,2-6行的代码就白白的戳在那,不起任何作用。以至于主函数中你调用的add(x)方法没有任何用。
你的代码实际上等价于:

#include
int main()
{
x=5;
printf("%d",x);
}

有些代码你白写了

jd8052655
jd8052655 谢谢回答!
接近 4 年之前 回复
wda2399123
wda2399123 他定义了add函数,然后在主函数里调用这个函数,怎么会白写呢?
接近 4 年之前 回复
oumentg
oumentg 我也是小白,有问题可以继续讨论
接近 4 年之前 回复

你的主函数呢?主函数都不写你定义有什么用啊

jd8052655
jd8052655 回复wda2399123: 谢谢帮助!
接近 4 年之前 回复
wda2399123
wda2399123 截图里的int main()不是主函数是什么?
接近 4 年之前 回复

你的主函数呢?主函数都不写你定义有什么用啊

jd8052655
jd8052655 谢谢回答!
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C语言定义全局变量
C语言定义全局变量时,在有多个.c/.h文件情况下发生了error LNK2005: "int abc"已经在 xxx.obj 中定义的错误 原因是定义时在头文件中定义了int abc,没有定义extern int abc。 后来定义了.h 中定义了extern int abc,但是在引用.h后没有在.c文件中写int abc,导致找不到abc。。。 最终终于找到了方法,定义全局变量时要在一
C语言头文件定义全局变量问题
正确的作法是在c源文件中定义一个全局变量,在头文件中加入全局变量的声明,在外部文件调用的时候,包含其头文件,加入全局变量的声明(不加也是可以的,最好加上)。 //1.c int a; //1.h extern int  a; //test.c #include "1.h" extern int a; int 
c语言全局变量的问题
我先定义了一个全局变量 从一个函数中修改他的值 当另一个函数用他的时候全局变量的值是修改前的值还是修改后的值
c语言全局变量,,,的问题,,
问题分析: 1.线程前后顺序有问题? 2.两个api算两次调用,所以变量存在不同的地址。   验证, 异步,js单线程,要看结果,只能单独扩展api, 如何解决, 直接修改接口。添加一个特殊接口。     两个方案: 1. 定制一个专门测试的api,一定可以,基于addlistener 扩展一个定制版本的扩展接口。addlistener后就同时先sendpcmvoicedat...
一个简单的问题。定义全局变量
怎么在public class Global : System.Web.HttpApplicationrn里定义全局变量?/rnrn比如定义一个int型变量rn然后初始化为1
python与C 语言定义全局变量的不同
一 定义全局变量时不同 1.在C语言中,定义在函数体外的变量默认为全局变量 #include <stdio.h> int m=10; void main() { m--; printf("m=%d",m); } 输出 m=9 2.在Python中,全局变量必须用global声明,不然会报错 import numpy as np m=10 def tes...
C/C++定义全局变量
在源文件A.c中定义,如int a,头文件X.h中用extern声明:extern int a ,别的.c函数只需要包含该头文件X.h即可。
C定义全局变量
程序工程中往往遇到这样的问题:某个变量是贯穿始终的,主函数以及不同的子函数都要用到这个变量,并且要调用子函数改变变量的值。这时候全局变量就起到一个桥梁作用,在函数外定义,在主函数中调用定义,在子函数A中调用并赋值,在子函数B中调用该变量,此时的值已经是改变之后的值。    用法:在主函数之前定义全局变量(不包含在任何变量里)int pointnum;//全局变量,匹配点对个数   在主函数mai
c语言全局变量释放问题
我在一段code中开始定义了两个全局变量:rnFILE *file = NULL;rnchar *g_servicename;rn一个是FILE指针,一个是字符指针,rn之后会在一些方法中对这两个变量赋值,最后需要在一个方法中对这两个变量释放,以备下一次调用这个code时,可以重新对全局变量赋值,有两个问题:rnrn1、对于这三个全局变量的声明定义处:rnFILE *file = NULL;rnchar *g_servicename;rnunsigned long debugtime = 0; rn是否正确?需不需要写成char *g_servicename="";或char *g_servicename=NULL;或char *g_servicename=0;?rnrn2、在释放这两个全局变量的方法中,使用如下方式是否正确:rnfile = NULL;rng_servicename = 0;rndebugtime = 0;rnrn对于servicename,使用如下方式是否等价呢?rnservicename = "";rnservicename = 0;rnservicename = NULL;rnrn谢谢指点!
最简单的C语言 定义变量问题
[code=C/C++]#include "stdio.h"rnvoid main()rnrn int a;rn a=2;rn int b;rn b=3;rn printf("%d\n%d",a,b); rn[/code]rnrnrn[size=16px]如上程序,提示错误,你们知道为什么吗?我书上写着:定义所有变量的步骤应该在为变量赋值之前,否则就、会产生错误。如果把程序改成下面的就对了[/size]rnrn[code=C/C++]#include "stdio.h"rnvoid main()rnrn int a;rn int b;rn a=2;rn b=3;rn printf("%d\n%d",a,b); rn[/code]rnrnrn[size=16px]请问高手是这样的吗?,请 详细解答 [/size]
c语言定义问题
#include int main() {     bool a;     char b;     printf("%d %d",sizeof(a),sizeof(b));     return 0; } 为什么错误呢
【C语言】一道简单的局部变量和全局变量的题
```rn#include rnrnint main()rnrnint a=1,b=3;rnrn int a=1,c=2;rn a=a+b;rn b=c+a;rn printf("a=%d,b=%d\n",a,b);rnrnprintf("a=%d,b=%d\n",a,b);rnrnreturn 0;rnrnrnrn```rn编译器输出是rna=4,b=6rna=1,b=6rn请问第二个输出的时候,为什么b是6呢
C语言 全局变量和局部变量
#全局变量和局部变量 ##1.变量作用域基本概念 - 变量作用域:变量的可用范围 - 按照作用域的不同,变量可以分为:局部变量和全局变量 ##2.局部变量 - 局部变量:     +定义在函数内部的变量以及函数的形参称为局部变量     +作用域:从定义哪一行开始直到与其所在的代码块结束     +生命周期:从程序运行到定义哪一行开始分配存储空间到程序离开该变量所在的作用域 -
C语言-全局变量和局部变量
1、局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于函数内, 离开该函数后再使用这种变量是非法的。在复合语句中也可定义变量,其作用域只在复合语句范围内。 2、全局变量也称为外部变量,它是在函数外部定义的变量。它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。 全局变量和局部变量的作用域(特殊情况) 1、全局变量的有效范围为定义处到源文件结束 2、
C语言—全局变量
关于全局变量: (1)对于局部变量的定义和说明,可以不加区分。而对于外部变量则不然,外部变量的定义和外部变量的说明并不是一回事。外部变量定义必须在所有的函数之外,且只能定义一次。其一般形式为: [extern] 类型说明符 变量名,变量名... 其中方括号内的extern可以省去不写。 例如: int a,b;等效于:extern int a,b; (2)而外部变量说明出现在要使用
C语言 局部变量和全局变量
(一)局部变量 定义在函数内部的变量称为局部变量(Local Variable),它的作用域仅限于函数内部, 离开该函数后就是无效的,再使用就会报错。 定义变量可能有3种情况: (1)在函数的开头定义 (2)在函数内的复合语句中内定义 (3)在函数的外部定义     int f1(int a){ int b,c; //a,b,c仅在函数f1()内有效 ret...
C语言全局变量和局部变量
形参变量要等到函数被调用时才分配内存,调用结束后立即释放内存。这说明形参变量的作用域非常有限,只能在函数内部使用,离开该函数就无效了。所谓作用域(Scope),就是变量的有效范围。 不仅对于形参变量,C语言中所有的变量都有自己的作用域。决定变量作用域的是变量的定义位置。 局部变量 定义在函数内部的变量称为局部变量(Local Variable),它的作用域仅限于函数内部, 离开该函数后就是...
c语言局部变量与全局变量
局部变量:在函数内部定义或者符合语句中定义的变量即是局部变量,这里说的函数包括主函数。void max(int a,int b){    int c;    c = a+b;}a,b,c都是局部变量,值在max函数里有效,当在其它函数里引用c,是无效的。int main(){ int a = 10; { int a = 11; int b = 1; printf("%d  %d  ",a,b...
C语言局部变量与全局变量
变量,可以定义在函数内,也可以定义在函数外 定义在不同位置的变量,作用域也是不同的 C语言中,按作用域范围可以分为局部变量、全局变量2种类型局部变量局部变量就是在函数内部声明的变量,它只在本函数内部有效,也就是说,只能在本函数内部使用 局部变量,只有当它所在的函数,被调用时才会被使用,而当函数调用结束时,局部变量也就失效了全局变量在所有函数外部定义的变量,称为全局变量 所有函数包括main(
c语言结构体数组全局变量?
[code=c]#inlcude rnrnSTU;rnrnSTU stu[5];rnrnvoid input()rnrnrnrn ​int i;rnrn ​for (i = 0; i < number; i++)rnrn ​ rnrn​ ​ ​scanf("%d %d",&stu[i].i,&stu[i].j);rnrnrnrn ​int i;rnrn ​for (i = 0. i < number; i++)rnrn ​ ​ ​printf("%d %d",stu[i].i,stu[i].j);rnrnrnrnint main(void)rnrnrnrn ​...rnrn ​...rnrn ​...rnrn ​input();rnrn ​look();rnrn ​return 0;rnrnrnrn可以这样定义一个全局结构体数据,然后不同的函数去调用这个结构体数组吗?[/code]
C语言指针与全局变量
c语言中,指针可以设置为全局变量吗?那位知道麻烦给予详细的解释?
C语言局部变量和全局变量
在讨论函数的形参变量时曾经提到,形参变量只在被调用期间才分配内存单元,调用结束立即释放。这一点表明形参变量只有在函数内才是有效的,离开该函数就不能再使用了。这种变量有效性的范围称变量的作用域。不仅对于形参变量,C语言中所有的量都有自己的作用域。变量说明的方式不同,其作用域也不同。 C语言中的变量,按作用域范围可分为两种,即局部变量和全局变量。 局部变量 局部变量也称为内部变量。局部变...
C语言:全局变量和局部变量
任务代码: 全局变量和局部变量: #include void fun1(); void fun2(); int x=1; int main () { x++; printf("%d\n", x); fun1(); printf("%d\n", x); fun2(); printf("%d\n", x)
C 语言全局变量
全局变量:1、定义在函数的外面,使得所有的函数都能访问到2、定义方式1:类型 名称定义方式2:类型 名称=初值3、全局变量既不存储在代码段上,也不存储在栈上,而是操作系统专门给它开辟的数据段(DATA段)上。操作系统将内存,划一部分做代码段,划一部分做栈,划一部分做数据段,剩下的做堆。4、分配全局变量的时间:操作系统将应用程序加载到内存;操作系统在数据段分配全局变量;进入main函数的入口。5、操...
iOS简单的全局变量定义与应用
最简单方法是使用extern关键字修饰,在AppDelegate中就2句话搞定,使用方法: 1.AppDelegate.h文件中  extern NSString *Str; 2.AppDelegate.m文件中 NSString *Str; 这样修改后Str就是一个全局字符串,在整个App中都是可见的。 适用是直接变量名就可以了。 比如要在其他A类里可以这样Str = @“
一个简单的问题,如何定义一个全局变量?
我在一个窗体代码最上方定义了一个变量,rnrn显示在Globals中,为何其它窗体不能调用,rn应放在哪里呢
C | C++定义全局变量的方法
我们想定义一个全局变量,能够在多个文件中使用,举例说明比如说三个文件main.c hello.c hello.h 想在main.c和hello.c中使用一个名字为a的变量,可能大家会简单地想直接在hello.h里面定义一个变量unsigned int a; 然后在main.c和hello.c中引用”hello.h”就可以直接使用了,但这是编译器会报重复定义变量的错误,我们可以怎么做呢? 方...
C/C++全局变量的定义与引用问题
最近在忙live555项目;说实话这是我做的第一个大型项目。虽然工作这么久还真是第一次做这么大项目;感觉自己这一年还真是没有一点进步;加个全局变量废了我半天力。废话不多说,切入正题 全局变量,最早我看书C primer Plus里说的应该是叫做局外变量吧。总是就是以关键字extern 在一个头文件 声明的,然后这个被声明的变量可以被项目里的任意一个.cpp或者.c文件引用,引用的方式有两
Delphi定义全局变量的问题
static int a = 2;rnint b = a + 2;rn这两个都是全局变量,Delphi中如何定义?
全局变量定义的问题???
小弟不太懂VC,要用到全局变量,请问在哪里定义啊?我用到的是dialog project
全局变量重复定义的问题
我在头文件里定义了以下两个全局变量,可是编译的时候还是出现重复定义的错误,请高手看看是怎么回事,非常感谢!rnrn#ifndef _GLOBALVARIABLE_H_rn#define _GLOBALVARIABLE_H_rnrntypedef struct myConfigVariablernrn CString cstrLocalIP;rn CString cstrLocalPort;rn CString cstrLoginName;rn CString cstrLoginPwd;rn CString cstrPeerIP;rn CString cstrPeerPort;rn CString cstrSPNumber;rn CString cstrSrcNum;rnConfigVariable;rnrnrnConfigVariable g_ConfigVariable;rnrnrnCString g_cstrConfigFile; rnrn#endifrnrnrnrn错误提示:rnsgipSP.obj : error LNK2005: "struct myConfigVariable g_ConfigVariable" (?g_ConfigVariable@@3UmyConfigVariable@@A) already defined in ConfigDlg.objrnsgipSP.obj : error LNK2005: "class CString g_cstrConfigFile" (?g_cstrConfigFile@@3VCString@@A) already defined in ConfigDlg.objrnsgipSPDlg.obj : error LNK2005: "struct myConfigVariable g_ConfigVariable" (?g_ConfigVariable@@3UmyConfigVariable@@A) already defined in ConfigDlg.objrnsgipSPDlg.obj : error LNK2005: "class CString g_cstrConfigFile" (?g_cstrConfigFile@@3VCString@@A) already defined in ConfigDlg.obj
BCB全局变量的定义问题
变量放在全局文件中,使用extern 关键字扩展rn以前定义可以调用,不知怎么了现在定义的无法使用。重新编译也不行
全局变量定义的问题
a.exe b.dll,其中a.exe调用b.dll,rn有N多全局变量并放在一个.h文件里,且这些合局变量exe和DLL都要用到,我想把rn我想让EXE和DLL都能调用,rn比如在.h里定义int a;rn当在EXE里设置a=10时,DLL里的a也变为10,就像在同一个程序里使用变量一样rn不知能不能做到呢?rnrn我不想传值和发消息或开个共享内存区取数据,rn
自动生成定义全局变量问题!
是一个winscok文件传输问题,因为传输大文件就要分包传输,所以接收端就有几个全局变量,如果有多个发送端同时向接收端传输文件,接收端就得重复调用几个全局变量,使得全局变量的值变得混乱.rnrnDim sum As LongrnDim t As BooleanrnDim lot As StringrnDim k As Longrnrn例如:第一个连接服务端的就为:1rn自动生成定义全局变量:rndim sum1 as longrndim t1 as booleanrndim lot1 as stringrndim k1 as longrnsum1=1rnt1=Falsernrn第二个连接服务端的就为:2rn自动生成定义全局变量:rndim sum2 as longrndim t2 as booleanrndim lot2 as stringrndim k2 as longrnsum1=1rnt2=Falsern请大家解答!rn
全局变量的定义问题
我想在用户登陆系统时纪录用户名,在别的窗体也可以使用该信息,不知定义在哪里合适?我是做了一个类来启动登陆窗体,如果合法就卸载该窗体,运行主窗体,该主窗体也是在这个类里实例化的。
定义全局变量问题
请问该在哪儿定义一个全局变量,让所有的表单都能够访问这个变量?rn我再项目中开始程序中rnpublic arna = 'fff'rn在一个表单中输入rnmessagebox(a)rn系统提示我找不到这个变量。
全局变量定义问题!!!!
在我的应用程序里面,是个切分视图,有两个视类,我在MainFrame里面用两个全局变量以这样的形式来访问视类的成员变量!rng_pMyView2->GetPathDir(pathdir);rng_pShowImageView->GetPathDir(pathdir);rn这两个全局变量我在global.h里面定义了!rn#ifndef GLOBAL_H rn#define GLOBAL_H rnrn#include"ShowImageView.h"rn#include"MyView2.h"rnextern CShowImageView *g_pShowImageView=NULL;rnextern CMyView2 *g_pMyView2=NULL;rnrn#endifrn在MainFrm里面包含了此头文件,但是老师报错如下:rn- Win32 Debug--------------------rnCompiling...rnMainFrm.cpprnGenerating Code...rnCompiling...rnMyView2.cpprnShowImage.cpprnShowImageView.cpprnGenerating Code...rnLinking...rnMyView2.obj : error LNK2005: "class CMyView2 * g_pMyView2" (?g_pMyView2@@3PAVCMyView2@@A) already defined in MainFrm.objrnMyView2.obj : error LNK2005: "class CShowImageView * g_pShowImageView" (?g_pShowImageView@@3PAVCShowImageView@@A) already defined in MainFrm.objrnShowImageView.obj : error LNK2005: "class CMyView2 * g_pMyView2" (?g_pMyView2@@3PAVCMyView2@@A) already defined in MainFrm.objrnShowImageView.obj : error LNK2005: "class CShowImageView * g_pShowImageView" (?g_pShowImageView@@3PAVCShowImageView@@A) already defined in MainFrm.objrnDebug/ShowImage.exe : fatal error LNK1169: one or more multiply defined symbols foundrnError executing link.exe.rnrnShowImage.exe - 5 error(s), 0 warning(s)rn
VB 定义全局变量问题?
我在程序中定义个全局变量为什么编译总是出错?rnrnPublic comsf As StringrnPublic ttlf As StringrnPublic flashf As StringrnPublic eclf As StringrnPublic selff As Stringrnrnrncomsf = "[color=#FF0000] CMOS[/color]" & vbCrLf & _rn" Drive High 4;" & vbCrLf & _rn" Drive Low 0.2;" & vbCrLf & _rn" Receive High 3.6;" & vbCrLf & _rn" Receive Low 1.3;" & vbCrLf & _rn" Edge Speed 50;" & vbCrLf & _rn" Open Input Default X;" & vbCrLf & _rn" Load NONE;" & vbCrLfrnrn..........rnrn编译错误:rn 无效外部过程。rnrn光标定在红字处。请问一下怎么解决啊 ?
关于定义全局变量的问题?
我的工程在web-inf下建立了一个xml文件rn在后面的程序中要用到这个文件,我的获取文件位置是这么弄的,rn先定义一个类产生全局变量rn[code=Java]rnpublic class ConstantsUtil rnpublic static String realPath;rnrn[/code]rn在定一个servletrn[code=Java]rnpublic class StartUpServlet extends HttpServlet rnpublic void init() throws ServletExceptionrn System.out.println("正在加载StartUpServlet....");rn ConstantsUtil.realPath=getServletContext().getRealPath("/WEB-INF/");rn System.out.println("------------"+ConstantsUtil.realPath);rnrnrn[/code]rn并在web.xml中配置servletrn在每次启动服务器的时候StartUpServlet都能正常加载且正确打印出WEB-INF的绝对地址rn但是当我在程序中用rnnew File(ConstantsUtil.realPath+"\\daoContext.xml")rn或者直接输出rnSystem.out.println(ConstantsUtil.realPath+"\\daoContext.xml");rnrn得到的ConstantsUtil.realPath是为nullrn难道这个全局变量设定有错?rnrn谢谢大家
定义全局变量的问题
怎么样定义全局变量public char flagrnflag=true 对吗???
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法