值的引用传递、数组作为函数参数

按值传递(按副本传递):

给函数传递变元(参数)时,变元(参数)不会直接传递给函数,二十先制作变元(参数)值的副本,存储在栈上,再使这个副本可用于函数,而不是使用初始值。

例如:

 #include<stdio.h>
 void change(int);
 int main()
 {
    int num = 9;
    change(num);   //将num = 9的值复制一份给change中的变量,
    printf("num = %d\n",num);//change中的值为副本,
     return 0;               //main函数中的num不随change函数中的num的改变而变

 }
void change(int num)
{
    num++;
}

运行结果:

num = 9

引用传递:

指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数

 #include<stdio.h>
 void change(int *);
 int main()
 {
    int num = 9;
    change( &num );   //传num的地址
    printf("num = %d\n",num);
     return 0;               

 }
void change(int * num)  //指针型变量,存放的是main函数中整型变量num的地址
{
    *num += 1;  //*表示取地址,取这个地址的值,指向num的值,然后对它执行加一的操作
}

数组作为函数参数:

原文地址:https://www.cnblogs.com/18191xq/p/11774335.html

时间: 2024-08-28 21:11:06

值的引用传递、数组作为函数参数的相关文章

c语言中二维数组作函数参数以及二维数组的理解

当二维数组作函数参数接受主调函数中的二维数组时,退化为一个指向数组的指针. 在此引用<c与指针>中的观点:作为函数 参数的多位数组名的穿递方式和一维数组名相同--实际传递的是个指向数组第一个元素的指针.但是,两者之间的区别在于, 多维数组的每个元素本身是另外一个数组,编译器需要知道它的维数,以便为函数形参的下标表达式进行求值.

C++数组作为函数参数的几个问题(转)

本文需要解决C++中关于数组的2个问题:1. 数组作为函数参数,传值还是传址?2. 函数参数中的数组元素个数能否确定? 先看下面的代码. #include <iostream> using namespace std; void testArrayArg(int a[]) { cout << endl; cout << "in func..." << endl; cout << "array address: &qu

二维数组作为函数参数深度详解

        前几天和同学讨论数组作为函数参数,感觉各种困惑.花了一些时间在网上查看了一些资料,并加上自己的理解.记录一下! 一. 指向指针的指针和指向数组的指针 很多人以为"指向数组的指针"就是"指向指针的指针",于是有人写这样的代码: int a[3][4]; int **p = a; //错误 数组实际类型是int [3][4],在作为右值时可以被转化为int (*)[4],它们都和int **不同,自然不可用. 那么,你要用一个指针来指向a,就要用一个

C-二维数组作为函数参数, 字符数组

1. 如果函数的参数是一个一维数组, 那么我们在传递的时候, 可以传递二维数组的某1行——一个一维数组 2. 二维数组可以作为函数的参数: 如果函数的参数是一个二维数组, 那么传入的实参也必须是一个相同类型的二维数组 3. 同一维数组一样, 当二维数组作为函数的参数的时候, 函数也是声明的一个指针指向传入的二维数组, 并通过指针对传入的二维数组进行操作 4. 当二维数组作为函数的参数的时候, 行数可以不写, 但是列数必须要写 5. 所以跟一维数组一样, 当二维数组作为函数参数是, 函数的参数还要

C语言中值得深入知识点----数组做函数参数、数组名a与&amp;a区别、数组名a的&quot;数据类型&quot;

1.数组作为函数参数 C语言中,数组做为函数的参数,退化为指针.数组作为参数传给函数时,传的是指针而不是数组,传递的是数组的首元素的地址.这里我们以将以整形变量排序来讲解. void sortArray(int a[] ,int num )以及void sortArray(int a[100] ,int num )都可以用void sortArray(int *a ,int num )表示.一般来说函数参数如果为数组,可以有两个参数,一个是数组名,一个是数组长度.对于排序而已,一般是要知道给定数

[GO]数组做函数参数

package main import "fmt" //数组为函数参数,实际上是值传递//实参数据里的每个元素,给形参数组拷贝一份//这里形参的数组其实就是实参的复制品 func modify(a [5]int) { a[0] = 555 fmt.Println("modify a = ", a) } func main() { a := [5]int{1, 2, 3, 4, 5} //这里初始化 fmt.Println("main a= ",

【426】C 传递数组给函数

参考:C 传递数组给函数 参考:C语言二维数组作为函数参数传递 参考:二维数组作为函数参数传递剖析(C语言)(6.19更新第5种) 总结: 一维数组参数,可以是地址.arr[].arr[n] 二维数组比较复杂,需要提供列的值,否则会报错,可参考上面的网址 #include <stdio.h> #include <stdlib.h> void myFunc1(int length, int *arr) { for (int i = 0; i < length; i++) { p

C语言--- 高级指针2(结构体指针,数组作为函数参数)

一.结构体指针 1. 什么是结构体指针?指向结构体变量的指针     结构体:     typedef  struct stu{                          char name[20];                          char sex;                          int age;                    }Student;     Student stu1 = {"zhangsan",'m',23};  

@清晰掉 传递数组给函数

一维数组 传递数组给函数的3个原则 1.函数调用时只需传递数组名. 2.在函数定义中,形参的类型必须与数组的相同,数组的大小不必指定. 3.函数原型必须定义为参数是一个数组. 1 #include <stdio.h> 2 #include <stdlib.h> 3 void sort(int x[], int m); 4 int main() 5 { 6     int i; 7     int marks[5] = {40, 90, 73, 81, 35}; 8       9