怎么在一个子函数里使用全局变量作为参数???

例如:
已经定义了一个全局变量extern int X
然后在一个函数SUM(int X,int Y,int Z)
我想让这个函数的参数intX调用的是全局变量X
怎么弄?

10个回答

在调用的地方直接 SUM(X,..., ...); 就可以了

为什么不把函数参数改名呢。函数参数改名,只有这个函数本身的代码需要修改。

你如果X是全局变量的话,这个方法的参数应该不需要int X吧

可以把sum函数后的int X改为X

如果想让函数使用这个的话,不需要将全局变量作为参数,可以直接在函数快里使用,但是函数的参数不能有与全局变量同名的,否则会覆盖全局变量。

在sum函数中用int a =::X 取得a的值即为全局变量X的值

改名是最好的,实在想用的话可以试试指针传递;

调用时直接将X作为参数传入就行了吧

你将这个参数定义成全局的,直接在函数里使用赋值就可以了

正常直接调用就好,
如果是有两段代码文件要合并到一起 ,改变量名称太玛法的话,其实可以用指针来操作变量。
int *X_p=&X;
之后用*X_p代替X

#include
#include
int X = 2;

int *X_p = &X;

void SUM(int y,int z){
*X_p = y+z;
}

void SUM_P(int *X,int y,int z){
*X = y+z;
}

int main()
{

SUM(100,100);
printf("X = %d\n",X);
SUM_P(X_p,200,100);
printf("X = %d\n",X);
return 0;

}

打印分别为200 和300

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
递归 —— 作为全局变量 vs 作为参数
以动态规划版的斐波那切数列为例,进行说明:作为全局变量memo = {0:0, 1:1} def fib(n): global memo if n not in memo: memo[n] = fib(n-1) + fib(n-2) return memo[n]作为参数def fib(n, memo): if n not in memo:
C语言数组作为参数传入子函数
对不起,可能我没表达清楚,我想问,数组作为参数传入子函数为什么不是作为形式参数传入,请你看程序运行结果,如果数组作为形式参数传入子函数,那么形式参数的值并不会影响原来main函数中的值,但是实际上,main函数中数组原来的值已经被修改了,这是因为数组传入的是地址(指针),我的问题就在这里,传入的是指针为什么不是用完就扔的形式参数。rnrn这与c语言的设计有关是吗?内部有什么机制吗?
全局变量能否作为blockread()的参数?
rn我申请了一个变量stack,然后在blockread中用了 rn rn blockread(filea,sizeof(stack),stack);rn 结果出现了如下错误:rn[Error] sixUnit1.pas(168): Constant object cannot be passed as var parameterrnrnrn 我的意思是想实现从文件中读入数到全局变量stack中,我应该怎样实现呢?
全局变量作为参数时的优化问题
假如有如下代码:rnrnunsigned int global_handle;rnrnvoid fun(unsigned int handle, int * result)rnrn ...rnrnrnint main()rnrn int result;rn ...rn fun(global_handle, &result);rn ...rnrnrn那么在编译优化时,是否不再将global_handle作为参数传递给fun,而是在fun内部直接去取global_handle,也就是省去了参数global_handle的压栈、出栈过程?rnrnrn
C++里的数组作为参数怎么传递?
大家看如下一个冒泡排序,我写成一个函数,数组怎么传递呀? 我这样写有问题。rn[code=C/C++]#include rn#include rn#pragma hdrstoprnrn//---------------------------------------------------------------------------rnrn#pragma argsusedrn#define N 9 //定义数组元素个数rnint maopao(int A[]);rnint main(int argc, char* argv[])rnrn int A[9] = 19,23,79,33,13,68,99,36,28;rn maopao( A[] );rn return 0;rnrnrnint maopao(int A[])rnrn int a[] = A[];rn int i, j, temp;rn cout << "排序前:";rn for(i=0; ia[j])rn rn temp = a[j];rn a[j] = a[i];rn a[i] = temp;rn rn rn rn cout << "\n排序后:";rn for(i=0; i
请问放在type中的数组能不能直接作为全局变量,怎么传给全局变量作为参数?
请问放在type中的数组能不能直接作为全局变量,怎么传给全局变量作为参数?请问怎么把type里的数组传出来呢?
复制构造函数里使用模板类对象作为参数
复制构造函数里使用模板类对象作为参数,有一句报错,怎么改?rnrn[code=C/C++]rn#include rnusing namespace std;rnrntemplate rnclass Pointrnrn T x,y;rnpublic:rn Point(T x1,T y1)x=x1;y=y1;cout<rnclass LineDerive:public Point rnrn T x2,y2;rnpublic:rn LineDerive(T i1,T j1,T i2,T j2):Point(i1,j1)x2=i2;y2=j2; rn;rnrntemplate rnclass LineIncludernrn Point p1,p2; rnpublic:rn LineInclude(T i1,T j1,T i2,T j2):p1(i1,j1),p2(i2,j2) rn LineInclude(const Point& pt1,const Point& pt2):p1(pt1),p2(pt2)rn;rnrnvoid main()rnrn Point p1(1,2),p2(3,4);rn LineDerive ld1(5,6,7,8); rn LineInclude li1(9,10,11,12);rn LineInclude li2(p1,p2); //这一句报错,怎么改?rnrn[/code]
怎么把read 文件这部分 作为一个子函数呢
[code=Perl]#!usr/bin/perlrnrnmy $file;rnrn$file = "s.txt";rnrnsub readrn my $content = <@_>;rn return $content;rnrnrnopen(FILE,"<$file") or die "can not open $file";rnrnread(FILE);rnrnclose(FILE);rn[/code]rn错误消息:rn[color=#FF0000]Not enough arguments for read at k1.pl line 15, near "FILE)"[/color]rnrn怎么把read 文件这部分 作为一个子函数呢 rn
关于子函数修改参数
子函数修改参数方法rnint main(void)rnrn char *p;rn test(&p);rn printf("p =%s\n",p);rnrnint test(char **pt)rnrn *pt = "hello world\n";rn printf("p =%s\n",*pt);rnrn这样的打印信息为:rnp =hello worldrnrnp =hello worldrnrn但是如果修改为下面的方式,程序就无法运行:rnint main(void)rnrn char **p;rn test(p);rn printf("p =%s\n",*p);rnrnrnint test(char **pt)rnrn *pt = "hello world\n";rn printf("p =%s\n",*pt);rnrn请问这是为什么?
python:线程的使用、线程共享全局变量、列表作为参数(全局变量)、避免全局变量被修改
进程是资源分布的单元 线程是进程中真正执行代码的 进程运行起来,会有一个主线程进行运行  父子线程:相互独立运行,当所有的子线程执行完后,主线程才执行完 下面这个程序就是一个线程 #线程也是python实现多任务的一种方式,thread模块是比较底层的模块 #threading模块是对thread做了一些包装,更方便使用 #多线程的执行 import threading impo
函数作为参数的使用
函数作为参数的使用,可以有: 函数作为另一个函数的参数,函数作为参数,函数作为含参函数。这...是什么鬼?是不是被我说得有点晕?那就看看示例代码来缓一缓? 1.首先是函数作为另一个函数的参数的使用,要注意的是fun2(m)的m与m()的m要一致,也就是不能不同。//函数作为另一个函数的参数 function fun1(){ alert("abc"); } function f
在mfc里使用全局变量?
我是这样的,定义一个头文件x.h,然后在里面定义全局变量,rn如 int x;rn然后在某个类的1.cpp文件里要调用的话,我就rn#include "x.h"rnextern int x;rn这时没什么问题,rn可是如果我又在一个2.cpp文件调用的话rn#include "x.h"rnextern int x;rn编译也能通过,可是会告诉我already defined in 1.obj,rnwhy?rn
子函数修改参数问题
问题描述:rn子函数修改参数方法rnint main(void)rnrn char *p;rn test(&p);rn printf("p =%s\n",p);rnint test(char **pt)rnrn *pt = "hello world\n";rn printf("p =%s\n",*pt);rnrn这样的打印信息为:rnp =hello worldrnrnp =hello worldrnrn但是如果修改为下面的方式,程序就无法运行:rnint main(void)rnrn char **p;rn test(p);rn printf("p =%s\n",*p);rnrnrnint test(char **pt)rnrn *pt = "hello world\n";rn printf("p =%s\n",*pt);rnrnrn没有打印信息rnrn上面的程序是运行在x86上的(用gcc编译),如果将它重新编译在ARM上运行(),两个程序都能正常的打印信息:rnp =hello worldrnrnp =hello worldrnrn这是为什么呢。rnrn
使用POJO作为参数
<p>rn <p>rn 20周年限定一卡通!<span style="color:#337FE5;">可学Java全部课程</span>,仅售799元(原价10374元),<span style="color:#E53333;">还送漫威正版授权机械键盘+CSDN 20周年限量版T恤+智能编程助手!</span>rn </p>rn <p>rn 点此链接购买:rn </p>rn <table>rn <tbody>rn <tr>rn <td>rn <span style="color:#337FE5;"><a href="https://edu.csdn.net/topic/teachercard?utm_source=jsk20xqy" target="_blank">https://edu.csdn.net/topic/teachercard?utm_source=jsk20xqy</a><br />rn</span>rn </td>rn </tr>rn </tbody>rn </table>rn</p>rn<p>rn <br />rn</p>rn<p>rn 本阶段Java视频教程涵盖JavaWEB 企业级开发所需的Servlet、JSP、MVC 设计模式、EL 表达式、JavaBean、国际化、Cookie和HttpSession、JavaMail等核心技术。并通过书城案例,巩固知识,提供开发能力。rn</p>
怎么通过子函数改变参数指向的地址
rn[code=C/C++]rnvoid p_add(unsigned char *pt)rnrn pt = pt + 1;rnrnint main()rnrn unsigned char s[3] = 1, 2, 3;rn unsigned char *p;rnrn p = s;rnrn printf("p = %d\n", *p);rn p_add(p); rn printf("p = %d\n", *p);rn return 0;rnrn[/code]rn想让在main中执行完 p_add(p); 后, p 指向s[1], = 2。rn上面这段代码显然不行,rnrn[code=C/C++]rnunsigned char *p_add(unsigned char *pt)rnrn pt = pt + 1;rn return pt;rnrnint main()rnrn unsigned char s[3] = 1, 2, 3;rn unsigned char *p;rnrn p = s;rnrn printf("p = %d\n", *p);rn p = p_add(p); rn printf("p = %d\n", *p);rn return 0;rnrn[/code]rn这个可行,但 p_add 的返回值我要作其它用途。rnrn[code=C/C++]rnvoid p_add(unsigned char **pt)rnrn unsigned char *pt1;rn pt1 = *pt;rn pt1 = pt1 + 1;rnrnint main()rnrn unsigned char s[3] = 1, 2, 3;rn unsigned char *p;rnrn p = s;rnrn printf("p = %d\n", *p);rn p_add(&p); rn printf("p = %d\n", *p);rn return 0;rnrn[/code]rn不行,同第一种效果相同。rnrn怎么实现在不使用 全局变量 或 p_add返回值的情况下,通过p_add的参数将main中p向后指?rn
在纯JDK系统里,怎么使用全局变量
我在系统的主画面上定义了一个全局变量,想在自定义控件中使用该全局变量,该怎么办.rn(该自定义控件是子画面上的控件)rnrn如果不这么使用全局变量,还有什么其他的好方法使用全局变量啊.
LPSAFEARRAY *作为一个参数
LPSAFEARRAY *作为参数要传入,传入是一个7个字符串组成的一维数组(如pb中string a[7]),请教在BCB中要如何实现?
operator 怎么作为一个函数的参数?
我c++考试里要求写一个 模板函数, 函数包括四个参数, 一个数组, 一个 运算符(binary operator), 和两个整型参数(数组的最大和最小索引),这个函数可以运算数组左右数字的和, 或者所有数字的乘积。rn问题是我不知道如何把operator当成参数, 在网上查了好久也没找到相关的内容。rn下面是我的代码, 不能编译, 请大家伙给看看, 谢谢了rn#include rnrnusing std::cin;rnusing std::cout;rnusing std::endl;rnrntemplate rnT function(const T * v, operator op, int min, int max)rnrn T result = v[0];rn for(int i = min; i< max; i++) rn result = result op v[i];rn rn rnrnint main()rnrn int v[10] = 1, 2, 3, 4, 5, 6, 7, 8, 9, 0;rn double d[10] = 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 0.7;rn rn int k = function( v, operator+, 0,9);//call your function to compute the summation of all elements in vrn double n = function( d, operator*,0,9);//call your function to compute the product of all elements in drn rn cout << k << endl;rn cout << std::fixed << n << endl;rn rn //system("pause");rn return 0;rn
怎么把一个界面作为参数?
如题
.net 多线程委托传入全局变量作为参数 出现参数不正确
现在我自己的解决办法是将全局变量 先赋值给局部变量 然后才传入多线程 就没有问题 不知道这个方法是否最好?
请问怎么设置一个全局变量能在page_load和Click里使用??
请问怎么设置一个全局变量能在page_load和Click里使用??rn类型为HttpPostedFilern还有可以定义为数组吗??
怎么setfilter里怎么用时间作为参数????急!!!!!
我想在setfilter里用时间作为filter的条件,可是不行,能不能告诉我!!!rn怎么setfilter里怎么用时间作为参数????
js 函数作为参数,作为回调函数的使用。
js 函数作为参数,作为回调函数的使用。 function test(a,func,c){ func("abc","1"); } test("1",function(abc,y){ console.log(y); },"1"); //执行结果为1 //执行test函数的时候,里面就直接调用的func函数,即
怎么使用全局变量!
怎么使用全局变量,给点代码,讲解一下了!谢谢!
全局变量怎么使用的问题~~?
我定义了一个全局变量,在Page_Load事件里给它赋了值,可在其他事件里这个变量的值不是Page_Load事件里赋的值;rn请教高手,怎么在其他事件里使用这个变量在Page_Load事件里的值?rnrnPublic Class C_s_03rn Public E_03_ID As Integerrn 。。。。。。。。。。。。。。。。。。rnrn Public Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Loadrn E_03_ID=Request.QueryString("ID") rn End Sub rnrn Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Clickrn Response.Write (E_03_ID) '这里 E_03_ID 的值与Page_Load里赋的值不一样,怎样做才能得到和Page_Load事件一样的值?rn End SubrnEnd Classrnrn在线等......
结构体最好作为全局变量
结构体最好作为全局变量,这样在跨文件函数传参时不会提示“不允许使用不完整的类型”——因为没有在每一个文件定义过。
c++ 对象作为参数,指针作为参数,引用作为参数
c++ 对象作为参数,指针作为参数,引用作为参数
help 控件怎么作为参数??
odfreeze(TDID)rnrn TDID.innerHTML="ok";rnrnrnrn rnrnrn rn
public static作为全局变量使用失败
在网站中,我需要做了一个类似计数器的东西,只不过是个Map型,而不是int。rn我拿来保存当前已经连接的ip(key) 以及这个ip对应的名字信息(value)。rn所以不能简单的用int。rnrn但是我还得获取到记录当前的连接数,方便某些页面的查询功能。rn所以我把这个Map定义成了public static,作为全局变量。rnrn然后放在全局变量的class类里面rn[code=Java]rnpublic class ServerParameter rnrn public static ConcurrentHashMap packageList = new ConcurrentHashMap();rn public static LikeByKeyHashMap lbk = new LikeByKeyHashMap();rnrn private static int iCount = 0; rn public static int getICount() rn return iCount;rn rn public static void setICount(int count) rn iCount = count;rn rnrn[/code]rnrn然后我的A类,启动了 会去给赋值,当有连接请求的时候rnServerParameter.packageList.put(XX,XXX);rnServerParameter sp = new ServerParameter()rnsp.setICount(sp.getICount()+1) ;rnrn这个时候如果我在A类中用print是可以清楚的看家这些值的变化的。rnrn但是我现在用B类,去print这些值,就会发现packageList还是null,iCount还是0。rn不是说public static是全局的嘛,值都是一个的。明明A类里面已经改变了,B类却获取不到。rnrn所以很奇怪,不知道为什么。希望大家帮忙下,或者告诉我一个另外的思路,换个方式实现。rn
请教数据库值作为全局变量使用?
我有许多全局变量.我在数据库中有两个字段(Name,Vale),我能不能在数据库记录的循环过程中,将全局变量都赋值,而不需要一个一个的过滤,再赋值.即:rn 全局变量:= Ds1.Fieldbyname('Vale').asInteger;rn而有什么办法将全局变量用ds1.FieldByName('Name').Asstring代替呢!
asp.net里全局变量使用问题
rn定义一个全局变量 string a=null;rn当一个函数里改变了a的值,是不是页面postback以后a又变成null?
使用对象类型作为方法的参数
public class ObjectAsParam { public void myName(String name) { System.out.println(&amp;quot;我叫&amp;quot; + name); } } public class UseObjectParam { public static void main(String[] args) { ...
Handler作为参数使用的理解
MainActivity package com.example.tcpsercerandroid; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.view.Menu; import android.view.View; import androi
java this作为实例参数的使用
看代码注释 package GUI; import java.awt.*; import java.awt.event.*; import java.awt.event.ActionListener; /** * Created by ADY on 2016/11/17. */ public class TFMath { public static void main(String
使用模版类作为模版参数
#include &amp;lt;iostream&amp;gt; //------------------- namespace trait { template &amp;lt;typename T&amp;gt; struct type_init; template &amp;lt;&amp;gt; struct type_init&amp;lt;int&amp;gt; { enum { v...
objective-C block作为参数使用
1. (void(^)())completion  匿名没有返回值block - (void)loadDataWithCompletion:(void(^)())completion failure:(void(^)(NSError *error))failure; - (void)loadDataWithCompletion:(void(^)())completion failure:(vo
MyBatis 使用数组作为参数
&amp;lt;select id=&quot;findDataByCodes&quot; resultMap=&quot;BaseResultMap&quot; &amp;gt; select &amp;lt;include refid=&quot;this_list&quot; /&amp;gt; from EDIIS_BLACK_LIST_UNIT t where 1=1 &amp;lt;if test=&quot;array !=null and arr...
使用数组作为函数的参数
1、使用数组作为函数的参数 数组作为函数实参时,只传递数组的地址(首地址),并不传递整个数组的空间。当用数组名作为实参调用函数时,数组首地址指针就被传递到函数中。 2、一维数组作为函数参数 打印数组某一段区间的元素 #include &amp;amp;amp;amp;lt;iostream&amp;amp;amp;amp;gt; using namespace std; void show(const int*, const in...
使用数组作为查询参数
1、初始化数组参数的类型。 语句如下: [code=&quot;java&quot;] String[] arrayRuleNo = ruleNos.split(&quot;,&quot;); String C_ORACLE_VARCHAR = &quot;TYP_AC_VARCHAR2&quot;; Connection conn = DaoUtil.getConnection(DaoTools.getConnName())....
SpringMVC_使用POJO作为参数
POJO可作为目标Header,目标方法的参数的类型叫POJO(普通的java类),那为什么会出现这个POJO呢?出现原因:如果请求是一个表单,这个表单通常需要对应一个类的对象。如果这时候使用RequestParam一一映射,那么代价就太大了,这时候可以使用一个java对象来作为参数。.   SpringMVC 会按照请求参数名和POJO属性名来进行自动化匹配,自动为改参数对象填充属性值。并且支持...
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数