-
2021-05-20 06:59:58
1.若有如下程序:
void s(char *m,int n)
{*m=*m+3;n=n+3;
printf("%c,%c,",*m,n);}
main()
{char p=′b′,q=′B′;
s(&q,p);
printf("%c,%c\n",p,q);}
则程序运行后的输出结果是()
A)E,e,b,E
B)e,E,b,F
C)E,e,e,E
D)e,E,b,E
2.在C语言的函数中()
A)必须有形参
B)形参必须是变量名
C)可以有也可以没有形参
D)数组名不参与形参
3.若有如下程序:
sub(int *t,int n)
{int *p1,*p2;
for(p1=t,p2=t;p1-t
if(*p1
return(*p2); }
main()
{int a[9]={9,36,19,39,26,5,6,33,15};
printf("%d\n",sub(a,9)); }
则程序运行后的输出结果是()
A)5
B)9
C)15
D)39
4.在表示C语言的整型变量时,表示“无符号整型”的符号是()
A)unsigned int
B)unsigned short
C)long int
D)unsigned long
5.以下程序段给数组所有的元素输入数据,请选择正确答案填入。()
#include
main()
{ int a[10],i=0;
while(i<10) scanf("%d",);
…
}
A)a+(i++)
B)&a[i+1]
C)a+i
D)&a[i++]
6.若输入60和13,以下程序的输出结果为()
#define SURPLUS(a,b)((a)%(b))
main()
{ int a,b;
scanf("%d,%d",&a,&b);
printf("\n",SURPLUS(a,b));
}
A)60
B)13
C)73
D)8
7.在下列叙述中,正确的一条是()
A)语句int *pt中的*pt是指针变量名
B)语句“int *p=a;”等价于“int *p;p=&a[0];”
C)运算符*和&都是取变量地址的运算符
D)已知指针变量p指向变量a,则&a和*p值相同,都是变量a的值
8.设有定义:#defineSTR"12345";,则以下叙述中正确的是()
A)宏名STR代替的是数值常量12345
B)宏定义以分号结束,编译时一定会产生错误信息
C)宏名STR代替的是字符串"12345";
D)宏名STR代替的是字符串常量"12345"
9.fprintf函数的一般调用方式是()
A)fprintf(格式字符串,文件指针,输出表列);
B)fprintf(文件指针,格式字符串,输出表列)
C)fprintf(文件指针,格式字符串,输出表列);
D)fprintf(fp,格式字符串,输出表列);
10.函数调用语句:fseek(fp,-20L,SEEK_END);的含义是()
A)将文件位置指针移到距离文件头20个字节处
B)将文件位置指针从当前位置向后移动20个字节
C)将文件位置指针从文件末尾处向后退20个字节
D)将文件位置指针移到离当前位置20个字节处
答案:1.A 2.C 3.A 4.A 5.D 6.D 7.D 8.C 9.C 10.C
更多相关内容 -
形参与局部变量名相同时js的处理
2018-09-16 19:38:39前几天遇到一个问题,大致就是形参名与局部变量名相同了,导致后续代码取值出错。唉,感觉大多数的坑都可以归结为基础知识的不扎实啊。 当形参与局部变量相同且局部变量有赋值时,局部变量的赋值会覆盖形参的值...前几天遇到一个问题,大致就是形参名与局部变量名相同了,导致后续代码取值出错。唉,感觉大多数的坑都可以归结为基础知识的不扎实啊。
当形参与局部变量相同且局部变量有赋值时,局部变量的赋值会覆盖形参的值。
function fn(a) { console.log(a); // 1 console.log(arguments[0]); // 1 var a = 2; console.log(a); // 2 console.log(arguments[0]); // 2 } fn(1)
这里,当改变函数形参的值时,arguments对象中的值也会一起变动。
当形参与局部变量相同且局部变量只有声明时,js不会覆盖局部变量。
function fn(a) { console.log(a); // 1 console.log(arguments[0]); // 1 var a; console.log(a); // 是 1 不是 undefined console.log(arguments[0]); // 1 } fn(1)
强行解释一波
var a = 1;
当机器执行上边代码时,其实分两步执行。
var a; // 声明提升 a = 1; // 变量赋值
js执行时,除非在执行前的语句,都没有对a变量赋值的其他语句,a才会被js引擎当作undefined值。
所以这里当遇到
var a
时,js只是做了声明,并没有赋值,就不会出现a为undefined的情况了。 -
实参、形参、局部变量和全局变量
2020-09-15 16:53:39目录实参和形参实参数据传递函数调用过程形参实参和形参的关系局部变量和全局变量局部变量局部变量的作用域说明:全局变量全局变量说明: 实参和形参 实参 实际参数简称“实参”。在调用有参函数时,函数名后面括号...实参和形参
实参
实际参数简称“实参”。在调用有参函数时,函数名后面括号中的参数称为“实际参数”,实参可以是常量、变量或表达式。
在调用有参函数时,主调函数和被调函数之间有数据传递关系。在主调函数中调用一个函数时,函数名后面括号中的参数称为“实际参数”(简称“实参”)。
实参可以是常量、变量或表达式, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。
数据传递
在调用函数过程中,系统会把实参的值传递给被调用函数的形参。或者说,形参从实参得到一个值。该值在函数调用期间有效,可以参加该函数中的运算。
在调用函数过程中发生的实参与形参间的数据传递,常称为“虚实结合”。
函数调用过程
- 函数的形参列于函数声明中,在函数定义的函数体内使用。在未出现函数调用时,形参不占内存中的存储单元;当函数调用时,形参(任何种类的)是一类将被填充的空白或是占位符。
- 将实参的值传递给形参。当函数被调用时,实参列在函数名后面的括号里。执行函数调用时,实参被传递给形参。
- 在执行函数期间,由于形参已经有值,可以利用其进行相关运算。
- 通过return语句将函数值带回到主调函数。
- 调用结束,形参单元被释放。实参单元仍保留并维持原值(值传递)。
形参
全称为“形式参数”是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传递的参数。
形参的作用是实现主调函数与被调函数之间的联系,通常将函数所处理的数据,影响函数功能的因素或者函数处理的结果作为形参。
没有形参的函数在形参表的位置应该写void.main 函数也可以有形参和返回值,其形参也称为命令行参数,由操作系统在启动程序时初始化,其返回值传递给操作系统。
实参和形参的关系
- 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量。
- 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值。
- 实参和形参在数量上,类型上、顺序上应严格一致,否则就会发生类型不匹配的错误。
- 在一般传值调用的机制中只能把实参传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参值发生改变,而实参中的值不会变化。而在引用调用的机制当中是将实参引用的地址传递给了形参,所以任何发生在形参上的改变实际上也发生在实参变量上。
局部变量和全局变量
局部变量
局部变量,也称内部变量,是指在一个函数内部或复合语句内部定义的变量。
局部变量的作用域是定义该变量的函数或定义该变量的复合语句。局部变量的生存期是从函数被调用的时刻算起到函数返回调用处的时刻结束。
int f1(int a) { int b,c; …… }a,b,c作用域 main() { int m,n; }
在函数f1内定义了三个变量,a为形参,b,c为一般变量。在f1的范围内a,b,c有效,或者说a,b,c变量的作用域限于f1内。m,n作用域 m,n的作用域限于main函数内。
局部变量的作用域说明:
- 主函数中定义的变量也只能在主函数中使用,不能在其它函数中使用。同时,主函数中也不能使用其它函数中定义的变量。因为主函数也是一个函数,它与其它函数是平行关系。这一点是与其它语言不同的,应予以注意。
- 形参变量是属于被调函数的局部变量,实参变量是属于主调函数的局部变量。
- 允许在不同的函数中使用相同的变量名,它们代表不同的对象,分配不同的单元,互不干扰,也不会发生混淆。形参和实参的变量名都为n,是完全允许的。
- 在复合语句中也可定义变量,其作用域只在复合语句范围内。
全局变量
全局变量也称外部变量,它是在函数外部定义的变量。它不属于哪一个函数,而是属于一个源程序文件:其作用域是整个源程序。
几乎程序中的所有函数都能使用全局变量,客观上全局变量就起到了在函数间传递数据的作用,甚至可以减少形参和实参的数量。当然在享用它的好处时,也要慎重,避免全局变量过多带来的降低函数通用性及存储空间的浪费。
全局变量说明:
- 全局变量从程序运行起即占据内存,在程序整个运行过程中可随时访问,程序退出时释放内存。与之对应的局部变量在进入语句块时获得内存,仅能由语句块内的语句访问,退出语句块时释放内存,不再有效。
- 局部变量定义后不会自动初始化,除非程序员指定初值。全局变量在程序员不指定初值的情况下自动初始化为零。
- 在同一源文件中,允许全局变量和局部变量同名。在局部变量的作用域内,全局变量不起作用。
int a,b; void f1() { …… } float x,y; int f2() { …… } main() { …… }
从上例可以看出a、b、x、y 都是在函数外部定义的外部变量,都是全局变量。但x,y定义在函数f1之后,而在f1内又无对x,y的说明,所以它们在f1内无效。a,b定义在源程序最前面,因此在f1,f2及main内不加说明也可使用。
-
c++ 中函数形参没有变量名
2019-11-03 16:14:00在c++中,有时候会看到这样的函数 int add(int,int);...这是由于没有形参名的函数只用来声明,然而到定义的时候,必须有形参名称。类似这样: int add(int, int); int main() { cout << add(100, 100...在c++中,有时候会看到这样的函数
int add(int,int);
这一看,不知道是什么意思,为什么形参没有参数名?
正常的情况应该是这样的int add(int a,int b);
这是由于没有形参名的函数只用来声明,然而到定义的时候,一般情况下都有形参名称。类似这样:
int add(int, int);//声明 int main() { cout << add(100, 100) << endl; } int add(int a, int b) { //定义 return a + b; }
然而,极端情况下,你一可以这样定义函数:
int printNumber(int,int) { //定义 printf("number %d",100); } printNumber(10,10);//函数调用,必须传递参数,却用不到
但是这样定义没有任何意义,因为你在调用时候还需要传递参数,然而函数体内部却得不到参数。
还需要注意一点的是,在c++中定义带有参数的宏,是不与要定义形参的,原因是宏只是字符串的替换,它本身不是函数,就相当于模板匹配,用到了哪个宏,按照规律展开便是了。#define SUM(a,b) a+b //遇到SUM()这个符号,就替换成 宏的定义。没有形参名称,因为根本不必.任何类型的参数都可以替换成 两个类型相加的形式.
-
关于c++中形参和全局变量同名的问题简单探究
2021-11-05 13:48:04关于c++中形参和全局变量同名的问题简单探究 今天突然想到如果形参和全局变量同名,会如何处理,有如下结果 #include <bits/stdc++.h> #define yes puts("yes"); #define inf 0x3f3f3f3f #define linf 0x3f3f3... -
JS在函数中形参和局部变量同名的问题
2018-05-04 17:05:15就是说,无论是形参还是函数中声明的变量,JS对他们的处理是没有区别的,都是保存在这个函数的变量对象中作为局部变量进行处理;那么结合上面我们说到的变量的重复宣告,接下来同名的问题就很简单了,看代码: ... -
关于JS形参是局部变量的问题
2018-04-17 17:56:00举个简单的函数例子 function getNum(num){ num =100; console.log(num); ...结果是:100和Uncaught ...虽然在函数中声明了一个隐式全局变量,可是函数的形参跟隐式全局变量的名字是相同的,而函数... -
变量名、函数名、形参相同的情况
2018-02-26 19:08:081. 变量和函数重名时,如果变量声明未赋值,则变量名被忽略,取函数(function (a) { console.log(a); var a = 10; function a(){} }( 100 ))结果:function a(){}2.(function (a) { console.log(a); var a = ... -
c++中的引用变量,以及引用变量作为函数形参的教程
2021-07-05 16:12:55目录引用变量的说明:引用变量的格式:引用变量作为函数形参的好处 引用变量的说明: ... 变量名 = 变量;// 引用变量必须在定义的时候就用 = 变量, 来初始化,因为初始化以后就不能赋值了,所以必须在定义的时候就赋值. -
C语言函数的形参和实参
2021-05-20 14:41:20原标题:C语言函数的形参和实参上一个例程中在进行函数调用的时候,不需要任何参数传递,所以函数定义和调用时括号内都是空的,但是更多的时候我们需要在主调函数和被调用函数之间传递参数。在调用一个有参数的函数... -
彻底弄懂函数形参与变量、函数的重名问题
2020-08-27 12:53:031.函数与变量重名 console.log(foo); function foo(){} var foo = "变量"; 输出为: function foo(){} 代码实际是: function foo(){} var foo; console.log(foo); foo = "变量"; 为什么会这样呢... -
成员函数的形参 与 成员变量重名
2017-03-05 18:40:40成员函数的形参 与 成员变量重名 时 定义函数时该如何使用形参和成员变量class User { int a,b; public: calculate(int a,double b); };当定义函数calculate时,直接使用a,b代表的是形参(可以理解为一般程序中... -
全局变量名、局部变量名和形参名冲突时,覆盖情况
2019-09-22 07:16:22以前错误的认为,全局变量名、局部变量名和形参名相同时,全局变量(也就是外部变量)被形参覆盖,形参被局部变量覆盖。 今天发现这样理解并不对。比如 function foo(num){ var num; console.log(num); } ... -
形参可以是常量、变量或表达式 C. 实参可以为任意类型 D. 形参应与其对应的实参类型一致
2021-05-20 06:06:46形参可以是常量、变量或表达式 C. 实参可以为任意类型 D. 形参应与其对应的实参类型一致更多相关问题()是调整商事关系的法律规范。18.下列不属于“政善治”的观点是17、周易是哪个朝代的易经?称为可变脂的是衡量一... -
形参中的数组是指针变量
2019-06-26 17:47:22形参中的数组是指针变量不是数值 #include<stdio.h> //void printf_array(int a[1000],int n) //void printf_array(int a[],int n) void printf_array(int *a,int n) //这三种写法等价 { int i = 0; for ... -
动手学习C语言-实参和形参均为指针变量
2020-03-13 10:50:18变量的内存地址与指针指针变量指针变量的赋值指针变量运算符及运算指针变量运算指针变量作为函数参数由数据变量改为指针变量由指针变量传地址改为数据变量传数据数组与地址指针数组名作函数参数指向数组的指针变量作... -
Python 形参和实参,局部变量和全局变量的含义理解及使用
2020-09-15 17:20:501、形参和实参 1.1 形参的含义及使用 1.2 实参的含义及使用 2、局部变量和全局变量 2.1 变量作用域的概念 2.2 局部变量 2.3 全局变量 2.4 修改全局变量值 -
函数指针变量作为函数形参
2020-09-07 12:17:53那么,在定义函数的时候,函数的形参变量可以接收实参变量传递过来的数据。所以,函数指针变量是一种变量类型,也可以作为函数的形参变量。程序测试例子如下: 程序运行结果如下: 可以看到,函数func1的... -
02.静态变量 形参
2018-11-16 15:32:44形参的本质是一个名字,不占用内存空间,不是实际存在变量,是没有初值的,只有当执行函数的时候,实参才会将赋值给形参,形参的值是根据实参的值而定的,而static型变量在编译时赋初值,即只赋初值一次,且占用内存... -
C语言中形参和实参详解及实例代码
2021-05-21 00:39:44实参出现在主调函数中,进入被调函数后,实参变量也不能使用。形参和实参的功能是作数据传送。发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。函数的形参和实参具..... -
Python的形参和实参使用方式
2020-12-23 08:24:55形参设置可以为数字字符串变量、元组和字典等任意类型数据,元组形参是在变量名前加*,字典形参是在变量名前加** 例如:fun(var),fun(*tuple),fun(*list),fun(**dict) 实参接受也可以是任意类型数据,当接收数据为... -
C++函数形参是引用但是实参用的是变量,为什么函数能调用成功?
2018-11-26 19:49:28#include<iostream> void test(int&... //这里传递的不是引用,是变量 return 0; } void test(int& t) { using namespace std; cout << "... -
C语言中,当全局变量和函数形参重名会发生什么?
2021-11-05 00:39:55当时百思不得其解,后面才发现是函数形参和全全局局变量重名了,导致将传入的数组指针误认为是全局变量数组。 下面我用代码来还原一下当时的情况 #include <stdio.h> #include <string.h> int ar -
若用数组名作为函数调用时的实参,则实际上传递给的形参的是(C)
2021-05-21 13:40:25比如定义了一个数组变量,编译器就会在内存中划分了一块地址空间给它,数组名这个指针常量就指向了这块内存空间的首地址,而数组首元素就存在这段内存空间的首地址处,即这段内存空间的首地址跟数组首元素的内存地址... -
C语言结构体指针与结构体变量作形参的区别
2021-07-31 14:58:52形参结构体变量成员值的改变不影响对应的实参构体变量成员值的改变 结构体指针 结构体指针作为函数参数,传递的是指向结构体变量的本身 结构体指针指向的变量成员值的改变影响对应的实参构体变量成员值的改变 ... -
4.形参中的数组是指针变量
2018-05-29 21:48:30形参中的数组,不是数组,是指针(对应数据首元素地址,用sizeof获取的是指针大小,而不是数组大小) 形参数组:int a[100], int[a], int *a 对编译器而言是一样的,都当做int *处理 */ void f(int a[100]){ cout... -
C++primer——形参、局部变量和静态局部变量的差别
2014-04-22 17:13:56形参、局部变量和静态局部变量的差别 从本质上说,三者均属于局部作用域中的变量,其中局部变量又可以分为普通(非静态)局部变量和静态局部变量。它们的差别: 作用域:形参的作用域为整个函数体;而普通(非... -
警告“未引用的形参/局部变量”的消除方法
2019-05-28 16:55:59应该注意到,在PX_UNUSED()实现时有一个细节,它没有给出参数的具体名称const T&,所以警告不会再传递(见“三、为什么不应该直接删除函数参数名”)。 其次,因为仅被用来调用空函数,且是传引用方法,所以代码... -
python函数形参用法实例分析
2021-01-20 04:47:58这些参数就像变量一样,只不过它们的值是在我们调用函数的时候定义的,而非在函数本身内赋值。 参数在函数定义的圆括号对内指定,用逗号分割。当我们调用函数的时候,我们以同样的方式提供值。注意我们使用过的术语... -
什么是函数,形参变量、返回值
2020-07-23 00:19:00什么是函数:程序中专门保存一段可重用的代码片段的程序结构,再起一个名字。 为什么要使用函数:代码重用 何时使用函数:只要一段代码...为什么要使用形参变量:有些函数执行时,必须传入必要的数据,才能正常的执行。