1,第一次接触C语言编程就该理解的东东,上次笔试居然搞糊涂了.
这里总结一下,其实就是一句话:参数"单向值传递",形参无法改变实参本来的值.
实现a和b成功交换,有两种方法:
(1)实参为a和b的引用.
(2)实参为a和b的地址,函数改变a和b的地址存储的值.
实例代码:
#include <iostream>
using namespace std;
//单向"值传递",无法将形参传递给实参
void swap1(int a,int b)
{
int temp;
temp=a;
a=b;
b=temp;
}
//引用,改变的就是原来那个变量
void swap2(int& a,int& b)
{
int temp;
temp=a;
a=b;
b=temp;
}
//同理,单向"值传递",指针地址不变.
void swap3(int* pa,int* pb)
{
int* temp=0;
temp=pa;
pa=pb;
pb=temp;
}
//指针地址不变,但是指向的值发生了变化.
void swap4(int* pa,int* pb)
{
int temp;
temp=*pa;
*pa=*pb;
*pb=temp;
}
int main()
{
int x,y;
x=3;
y=4;
swap1(x,y);
cout<<x<<" "<<y<<endl;
x=3;
y=4;
swap2(x,y);
cout<<x<<" "<<y<<endl;
x=3;
y=4;
swap3(&x,&y);//x,y值不变.
cout<<x<<" "<<y<<endl;
x=3;
y=4;
swap4(&x,&y);
cout<<x<<" "<<y<<endl;
return 0;
}
分享到:
相关推荐
在这个`swap`函数的按引用版本中,由于`a`和`b`是`x`和`y`的引用,所以它们的交换会影响到`main`函数中的变量。 三、选择传递方式的考虑因素 1. 性能:如果传递的是大型对象,按值传递可能会导致不必要的内存复制,...
值传递是一种单向传递,即主调函数调用时给形参分配存储单元,把实参的值传递给形参,调用结束后,形参的存储单元被释放,而形参值的任何变化都不会影响到实参的值,实参的存储单元仍保留并维持数值不变。...
由于基本类型的参数是传值的,因此尽管在fun1内部a和b的值被交换了,但main函数中的x、y的值不会改变。 【例2】基本类型指针作为函数参数的传址方式: ```c #include "stdio.h" void fun2(int *a, int *b) { int ...
9. 简单变量作为实参时,他和对应形参之间的数据传递方式是A) 单向值传递,即实参传给形参的是副本,形参改变不影响实参。 10. 输出为C) 6,`strlen(str)` 计算字符串长度,包含结束符 '\0'。 【填空题解析】 1. ...
正确答案是A) 单向值传递,C语言中实参和形参之间是单向值传递,即值拷贝。 - 第10题涉及到字符串长度。正确答案是C) 6,strlen函数计算不包括结束符'\0'在内的字符串长度。 2. 填空题: - 未提供完整填空题内容,...
- 当简单变量作为实参时,C语言采用单向值传递,即形参只是实参的一个副本,修改形参不会影响实参,选项A)正确。 7. **函数调用**: - `fun1`函数用于排序,`fun2`函数用于交换两个变量的值。在`fun1`中,`fun2`...
ASCII值48对应数字字符0,程序中`a`和`b`初始化为字符'1'和'2',`b++`后变为'3',它们之间的ASCII值差为2,因此输出是50和2。答案是B。 6. 字符串赋值: 字符串赋值应使用双引号,且不能对非字符数组的指针直接赋...
5. ASCII值和字符输出: 字符'1'的ASCII值为49,'2'的ASCII值为50。程序`printf("%c,",b++)`会先输出当前的b值,然后自增,因此输出50,第二个`printf("%d\n",b-a)`输出b-a的差,即2。 6. 字符串赋值: 只有D选项...
例如,在swap1函数中,传递的是值的副本,在函数内部,P和q的值确实是交换了,但是它们是局部变量,不会影响到主函数的a和b。当swap1返回时,p和q也就被删除了。所以,从主函数的角度来看,swap1是不能完成a、b的值...
} 只是交换了 a 和 b 的值,但是不改变外部变量 x 和 y 的值。 15. 在 C 语言中,有以下程序 int f(int n) { if (n == 1) return 1; else return f(n - 1) + 1; },其运行结果是 f(5) = 5,因为函数 f(int n) 是一...
交换两个变量的值而不使用临时变量 **知识点解析:** 使用加减法或异或运算都可以实现。 - **加减法:** ```c a = a + b; b = a - b; a = a - b; ``` - **异或法:** ```c a = a ^ b; b = a ^ b; a = a ^...
在这个例子中,尽管`a`和`b`在`swap`方法内部被交换,但实际参数`x`和`y`的值并没有改变,因为传递给`swap`的是`x`和`y`的副本,而非`x`和`y`本身。 理解并熟练运用这些概念对于编写高效、可维护的Java程序至关重要...
在`swap()`函数的示例中,可以看到如何通过临时变量实现两个数的交换,这展示了值传递单向传递的特点。 此外,PPT还提到一个练习,即编写一个程序,让用户输入数字`n`,然后计算1到`n`的和。这个任务可以通过调用...
如同物种 a 和物种 b 的关系,虽然能量流动通常是单向的(从 a 到 b),但信息传递可能是双向的,生物间的互动可能互相影响,形成反馈机制。例如,在捕食关系中,被捕食者的行为可能会反过来影响捕食者的捕食策略。 ...
10. **TST网络**:在16入线16出线的TST网络中,PCM每帧256个时隙,A到B选TS25,则B到A的内部时隙为153。 11. **Banyan网络**:Banyan网络是有阻塞的单通路网络,其特性包括唯一路径和自选路由,但并非无阻塞。 12....
知识点:程序段使用了变量交换的技巧,a和b的值被交换。 11. 设有声明int x=-1;执行if(x)x=-x-1;后变量x的值是2。因此,正确答案是D.2。 知识点:if语句用于条件判断,x=-x-1是将x的值取反并减1。 12. 关于...
函数调用时的实际参数可以是常量、变量或表达式,但必须与形式参数类型匹配,数据传递通常是值传递,即实参到形参的单向传递。例如,如果要交换两个数的值,可以创建一个函数并传入参数,但由于值传递,原始变量不会...
同样,内环境中的物质交换,如组织液和淋巴间的物质转移,也是单向的,组织液中的物质可以进入淋巴,但淋巴不能逆流回组织液。 5. **信息传递在生物学考试中的考察** 高考生物复习中,信息传递是重要的考点,包括...
6、自动交换网络驱动电路: 主要实现电话交换通信时,CPU发出命令信息,由此电路实现驱动自动交换网络系统,其核心集成电路为SN74LS374,D8255A,GD74LS373等芯片。 7、信号音控制电路: 它完全按照CPU发出的指令...
6. 实参与形参的数据传递:C语言中,简单变量作为实参时,数据是通过值传递,即单向值传递,选项B)正确。这意味着形参的变化不会影响到实参的值。 7. 无返回值的函数:如果一个函数没有`return`语句,那么它没有...