分享一下基础测试碰到的一道简单的题目:以下程序运行后的打印结果是______
- #include
- void change(int *n);
- int main()
- {
- int a = 90;
- change(&a);
- printf("%d\n", a);
- return 0;
- }
- void change(int *n)
- {
- *n = 10;
- }
- #include<stdio.h>
- void change(int *n);
- int main()
- {
- int a = 90; //定义变量a并赋初值为90
- change(&a); //调用chang函数,函数中行参指针n指向a的地址
- /*执行了这一行代码之后,a的值发生了变化,因为在执行chang函数时,首先分配了存储空间在行参n,指针n指向了a的地址,那么此时指针n的地址就是变量a的地址,chang函数中改变了指针n的值,那么同个地址的a的值也就相应的发生了变化,因此执行完这句代码之后,a的值变成了10;*/
- printf("%d\n", a);
- //输出结果是:10
- return 0;
- }
- void change(int *n) //定义了一个无返回值类型的函数,行参以指针的形式
- {
- *n = 10; //此处将行参的赋值为10
- }
复制代码 题中涉及到了一个知识点,就是老师在视频中将到的
(1)当形参时数组或者是指针的时候,所做的传递便不是值传递了,传递的是地址,因此当形参中的值发生了改变之后,也会影响外面变量的值
(2)当形参是基本数据类型的时候,此时做的只是单向传递,是值传递,形参的值改变的话,是不会影响外面变量的值的
举例来说,将上面的调用函数做下修改:
- void change(int n) //定义了一个无返回值类型的函数,行参为整型
- {
- n = 10; //此处将行参的赋值为10
- }
复制代码 若调用的函数修改成这样,那么现在调用之后输出来的值就应该仍旧是90啦~~
虽然是个很简单的知识点,但是感觉还是会比较容易就忽略的一个地方,所以跟大家分享一下~~
|
|