十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
函数参数和
成都创新互联公司专注于正蓝企业网站建设,响应式网站设计,商城网站开发。正蓝网站建设公司,为正蓝等地区提供建站服务。全流程按需定制开发,专业设计,全程项目跟踪,成都创新互联公司专业和态度为您提供的服务
返回值
三种传递方式:值传递、指针传递和引用传递
引用与指针的比较
引用是
C++中的概念,初学者容易把引用和指针混淆一起。一下程序中,n
是m
的一个引用(
reference
),m
是被引用物(referent)。
int
m;
int
n
=
m;
n
相当于m
的别名(绰号),对n
的任何操作就是对m
的操作。所以n
既不是m
的拷贝,也不是指向m
的指针,其实n
就是m
它自己。
C++语言
中,函数的参数和返回值的传递方式有三种:值传递、指针传递和引用传递。
以下是“值传递”的示例程序。由于Func1
函数体内的x
是
外部变量
n
的一份拷贝,改变x
的值不会影响n,
所以n
的值仍然是0。
void
Func1(int
x)
{
x
=
x
+
10;
}
int
n
=
0;
Func1(n);
cout
“n
=
”
n
endl;
//
n
=
以下是“指针传递”的示例程序。由于Func2
函数体内的x
是指向外部变量n
的指针,改变该指针的内容将导致n的值改变,所以n
的值成为10。
void
Func2(int
*x)
{
(*
x)
=
(*
x)
+
10;
}
int
n
=
0;
Func2(n);
cout
“n
=
”
n
endl;
//
n
=
10
以下是“引用传递”的示例程序。由于Func3
函数体内的x
是外部变量n
的引用,x
和n
是同一个东西,改变x
等于改变n,所以n
的值成为10。
void
Func3(int
x)
{
x
=
x
+
10;
}
int
n
=
0;
Func3(n);
cout
“n
=
”
n
endl;
//
n
=
10
对比上述三个示例程序,会发现“引用传递”的性质象“指针传递”,而书写方式象“值传递”。实际上“引用”可以做的任何事情“指针”也都能够做,为什么还要“引用”这东西?
答案是“用适当的工具做恰如其分的工作”。
你要问的是scanf()函数吧
scanf编辑
与printf函数一样,都被定义在头文件stdio.h里,因此在使用scanf函数时要加上#include stdio.h。它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。
函数原型编辑int scanf(const char *format,...);
函数 scanf() 是从标准输入流stdio (标准输入设备,一般是键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。[1]
其调用形式为: scanf("格式说明字符串",变量地址);变量地址要求有效,并且与格式说明的次序一致
scanf()函数返回成功赋值的数据项数,读到文件末尾出错时则返回EOF。
如:
scanf("%d %d",a,b);
如果a和b都被成功读入,那么scanf的返回值就是2
如果只有a被成功读入,返回值为1
如果a和b都未被成功读入,返回值为0
如果遇到错误或遇到end of file,返回值为EOF。
且返回值为int型.
例:使用scanf函数输入数据。
#includestdio.h
int main(void)
{
int a,b,c;
printf("输入a,b,c\n");
scanf("%d%d%d",a,b,c);
printf("a=%d,b=%d,c=%d\n",a,b,c);
fflush(stdin);
return 0;
}
a,b,c中的是地址运算符,a指a在内存中的地址。scanf的作用是:按照a,b,c的内存地址将输入的数据存到a,b,c中去。变量a,b,c的地址是在编译连续阶段分配的(存储顺序由编译器决定)。
这里注意:如果scanf中%d是连着写的如“%d%d%d”,在输入数据时,数据之间不可以加逗号,只能是空格或
tab键或者回车键——“2 3 4” 或
“2(按tab)3(按tab)4(按tab)”。若是“%d,%d,%d”,则在输入数据时需要加“,”,如“2,3,4”.
void main()
{
int n;
int a = scanf("%d", n);
printf("%d\n", a);
}
//输入一个字符就返回0,看MSDN可以知道,只要输入错误就返回0
return 后,就直接跳出 key_scan( )函数了,所以返回到调用该函数的地方。