精华内容
下载资源
问答
  • c函数传递数组

    千次阅读 2019-07-27 09:38:23
    如果您想要在函数传递一个一维数组作为参数,您必须以下面三种方式来声明函数形式参数,这三种声明方式的结果是一样的,因为每种方式都会告诉编译器将要接收一个整型指针。同样地,您也可以传递一个多维数组作为...

    一 形式参数

    如果您想要在函数中传递一个一维数组作为参数,您必须以下面三种方式来声明函数形式参数,这三种声明方式的结果是一样的,因为每种方式都会告诉编译器将要接收一个整型指针。同样地,您也可以传递一个多维数组作为形式参数。

    1 形式参数是一个指针:

    void function(int *p)

    {...}

    2 形式参数是一个已定义大小的数组

    void function(int array[10])

    {...}

    3 形式参数是一个未定义大小的数组

    void function(int array[])

    {...}

    二 调用方式

    数组名是一个指向数组中第一个元素的常量指针,将数组名(常量指针)传递给函数

    int balance[5];

    t =  function(balance);

    三 案例展示

    #include <stdio.h>
     
    /* 函数声明 */
    double getAverage(int arr[], int size);
     
    int main ()
    {
       /* 带有 5 个元素的整型数组 */
       int balance[5] = {1000, 2, 3, 17, 50};
       double avg;
     
       /* 传递一个指向数组的指针作为参数 */
       avg = getAverage( balance, 5 ) ;
     
       /* 输出返回值 */
       printf( "平均值是: %f ", avg );
        
       return 0;
    }
     
    double getAverage(int arr[], int size)
    {
      int    i;
      double avg;
      double sum=0;
     
      for (i = 0; i < size; ++i)
      {
        sum += arr[i];
      }
     
      avg = sum / size;
     
      return avg;
    }

     

    展开全文
  • c函数传递字符串

    千次阅读 2019-08-23 16:13:31
    把具有相同类型的若干变量按有序的形式组织起来,这些按序排列的同类数据...由此可得:在函数中传递一个字符串与传递一个数组类似,可参考c函数传递数组 一 形式参数 在函数中传递一个字符串作为参数,以下面三...

    把具有相同类型的若干变量按有序的形式组织起来,这些按序排列的同类数据元素的集合称为数组。按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别,因此,字符数组是数组的一种。字符数组实际上是一系列字符的集合,也就是字符串(String)。

    由此可得:在函数中传递一个字符串与传递一个数组类似,可参考c函数传递数组

    一 形式参数

    在函数中传递一个字符串作为参数,以下面三种方式来声明函数形式参数,这三种声明方式的结果是一样的,因为每种方式都会告诉编译器将要接收一个字符指针。

    1 形式参数是一个字符指针:

    void function(char *p)

    {...}

    2 形式参数是一个已定义大小的字符数组

    void function(char array[10])

    ...}

    3 形式参数是一个未定义大小的字符数组

    void function(char array[])

    {...}

    二 调用方式

    字符数组名是一个指向字符数组中第一个字符元素的常量指针,将字符数组名(常量指针)传递给函数

    char str[20]="hello world!"

    func(str);

    三 案列展示

    #include<stdio.h>
    
    void func(char s);
    
    int main(){
        char str[20] = "hello world!"
        func(str);
        return;
    }
    
    void func(char s[]){
        printf("%s", s)
        return;
    }

     

     

     

     

    展开全文
  • char a[10][10]; void point(char p[][10]); char *dir[WORDLEN]; for (int i=0; i<WORDNUM; i++){ dir[i] = (char *)malloc(WORDLEN); } void point(char*p[]);
    char a[10][10];
    void point(char p[][10]);
    
    
    
    char *dir[WORDLEN];
    for (int i=0; i<WORDNUM; i++){
    	dir[i] = (char *)malloc(WORDLEN);
    }
    
    void point(char*p[]);

     

    展开全文
  • C语言函数传递方式-值传递和地址传递

    千次阅读 多人点赞 2020-03-02 12:10:20
    C语言函数传递方式 值传递 定义 所谓的值传递,顾名思义就是使用变量、常量、数组等作为函数的参数。 地址传递

    C语言函数传递方式

    值传递

    定义

    • 所谓的值传递,顾名思义就是使用变量、常量、数组等作为函数的参数。实际是将实参的值复制到形参相应的存储单元中,即形参和实参分别占用不同的存储单元。

    特点

    • 值传递的特点是单向传递,即主调函数被调用时给形参分配存储单元,把实参的值传递给形参,在调用结束后,形参的存储单元被释放,而形参值的任何变化都不会影响到实参的值,实参的存储单元仍保留并维持数值不变。

    示意图

    值传递示意图
    其实值传递过程中由隐含的一步,如下代码所示:

    	int x = a;
    	int y = b; 
    

    所以swap1函数交换的是x和y,而原来的a和b从未改变。

    代码演示

    void swap1(int x,int y)
    {
    	int temp;
    	temp = x;
    	x = y;
    	y = temp;
    	printf("x = %d,y = %d\n",x,y);	
    }
    int main(int argc, char *argv[]) 
    {
    	int a = 12,b = 24;
        swap1(a,b); // 值传递 
        printf("a = %d b = %d",a,b);
    }
    
    

    运行结果

    值传递运行结果


    地址传递

    说明

    • 大家都知道,在C语言中,数组名就代表数组的首地址。所谓的地址传递,指的就是函数的参数是数组名或者指针。传递的是数组的首地址或指针的值,而形参接收到的是地址,即指向实参的存储单元,形参和实参占用相同的存储单元,即形参和实参是相同的。

    特点

    • 形参并不存在存储空间,编译系统不为形参数组分配内存。因此在数组名或指针作函数参数时所进行的传送只是地址传送,形参在取得该地址之后,与实参共同拥有一段内存空间,形参的变化也就是实参的变化。

    示意图

    地址传递示意图
    注意:这里也有一个隐含动作,如下代码所示:

    	x = &a;
    	y = &b;
    

    分别将a的地址,b的地址赋值给x和y,这样swap2函数操作的数其实就是a和b。

    代码演示

    void swap2(int* x,int* y)
    {
    	int temp;
    	temp = *x;
    	*x = *y;
    	*y = temp;
    	printf("x = %d y = %d\n",*x,*y);
    }
    int main(int argc, char *argv[]) 
    {
    	int a = 12,b = 24;
    	swap2(&a,&b); //地址传递
    	printf("a = %d b = %d",a,b); 
    }
    

    运行结果

    地址传递运行结果
    以上就是C语言值传递和地址传递的区别了,相信大家应该很清楚了吧!

    展开全文
  • C语言函数传递指针参数

    千次阅读 2018-09-11 14:59:47
    函数传递实质是形参值对实参值的拷贝。(形参需要重新定义及分配内存) swap()函数:对拷贝的地址指向值进行赋值,函数内通过对地址的指向值,内存的操作,操作函数外的值。 更简单的方法为引用&,直接对...
  • C语言 函数传递多个字符串参数

    千次阅读 2020-10-02 22:38:33
    1. 通过全局变量传递   我们需要定义一个、或多个全局变量 getStr1、getStr2、…,用来接收来自函数中的字符串。 char getStr1[100]; char getStr2[100]; // ... 多个变量 char* fun() { strcpy(getStr1 , ...
  • c函数传递结构体数组

    千次阅读 多人点赞 2019-08-23 16:35:25
    (结构体变量传递函数与基本变量传递函数类似,可参考c函数传值调用和引用调用) 如果结构体成员较多,尤其是成员为数组时,传送的时间和空间开销会很大,影响程序的运行效率。所以最好的办法就是使用结构体...
  • C语言函数传递指针参数的问题

    万次阅读 多人点赞 2016-11-28 12:14:18
    一个问题是,我们想用一个函数来对函数外的变量v...如果你真的理解C语言中【函数】这个工具的本质,我想你稍微仔细的思考一下,可能就不会来查看博主的这篇文章,对函数来说,它所传递的任何参数仅仅是原来参数的一...
  • C语言函数传递二维数组

    千次阅读 2019-08-05 16:37:24
    C语言如果给函数传递二维数组作为参数 问题的产生 先看一个传递二维数组的例子: #include <stdio.h> void foo(int a[][], int m, int n) { int i = 1; int j = 1; printf("a[%d][%d]=%d\n", i, j,...
  • c语言函数传递数组

    2014-10-31 12:51:00
    1、传递数组,打印不出来 #include <stdio.h> void solve() { printf("%d",x[0]); } int main() { int i; for(i=0;i<n;i++) { scanf("%d",&x[i]); ...
  • C语言函数参数传递详解

    千次阅读 2021-06-02 11:00:20
    1.值传递和指针传递 (1)值传递:即按值传递参数,是将实参变量的值复制一个到临时存储单元中,如果在调用过程中改变了形参的值,不会影响实参变量本身,即实参变量保持调用前的值不变 ...
  • 函数传递指针变量时,在函数体中可以通过访问传递过来的指针地址修改指针的内容。但是如果在函数体中定义一个同名的指针并修改他的内容是无法对原指针造成影响的。 例如: #include <stdio.h> void f (int* a)...
  • 题目:定义一个函数,使用二维数组作为传入参数,在主函数中输入4×4的二维数组,调用已定义的函数,把该矩阵传入,在主函数中输出结果。函数功能:使二维数组中两条对角线上的元素均为1,其余元素均为0。 解: int ...
  • 主要给大家介绍了关于C语言中二维数组作为函数参数来传递的三种方法,文中通过示例代码介绍的非常详细,对大家学习或者使用C语言有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
  • c语言函数传递数组

    千次阅读 2020-04-11 19:23:43
    可以定义一个能接受数组作为函数参数的函数,然后调用这个函数时,可以将一个实际的数组传递给它。 数组作为函数参数时,其定义方式有下列三种: /*函数名param后跟一个空的[],说明param可以接受一个数组*/ void ...
  • C语言函数中的数组传递

    千次阅读 2019-07-02 17:17:14
    #include <stdio.h> typedef unsigned char uchar; //---------------------------------------------------全局...//---------------------------------------------------子函数声明 void func3(void)...
  • C语言函数参数的传递详解

    千次阅读 多人点赞 2019-03-31 15:04:54
    http://c.biancheng.net/cpp/html/494.html
  • C语言函数传递指针的理解 传递参数时会生成一个复制的指针,该指针指向的位置与 原指针指向的位置相同; 即b自身在计算机的地址与a的地址不是相同的,这时你在函数体内修改a指向的位置,一定不会修改b指向的位置。 ...
  • C语言函数传递(实参 形参)

    千次阅读 2018-06-05 16:12:45
    形参:在被调函数形参表中的变量名、数组名,该过程在被调用前,没有为它们分配...传递参数时,形参与实参是按位置结合的,形参表和实参表中对应的变量名可以不必相同,但它们的数据类型、参数个数及位置必须一一对应
  • C语言函数传递与值传递

    千次阅读 2016-01-25 11:53:56
    C语言提供了两种参数传值机制:一种是值传递,就是将实参的值赋值给形参,换句话说,形参是实参的一份拷贝,因此函数对形参的改变并不影响实参;另一种是参数传递,是一种地址传递,是指将实参的地址赋值给形参,即...
  • https://blog.csdn.net/gl486546/article/details/53375999
  • C语言函数返回值与参数传递

    千次阅读 2019-10-26 11:57:43
    C语言函数返回值与参数传递 一:参数传递 C语言的函数中必不可少的就是参数传递,可以采用传值和传指针两种方式。 1.传值的形式:只是将参数值的拷贝传给函数,并非参数本体如: int test(int x,int y) { x=2*y; ...
  • C语言函数参数传递的三种方式

    万次阅读 多人点赞 2017-07-22 21:09:40
    C语言函数参数传递的三种方式(1)传值,就是把你的变量的值传递函数的形式参数,实际就是用变量的值来新生成一个形式参数,因而在函数里对形参的改变不会影响到函数外的变量的值。(2)传址,就是传变量的地址...
  • C语言函数参数传递的三种方式

    千次阅读 2016-10-10 15:51:04
    原地址:http://c.biancheng.net/cpp/html/494.html 一、三道考题 开讲之前,我先请你做三道题目。(嘿嘿,得先把你的头脑搞昏才行……唉呀,谁扔我鸡蛋?) 考题一,程序代码如下: void Exchg1(int x, int...
  • C语言函数参数传递的两种方式:值传递和引用传递1 值传递1.1 实实在在的值传递1.2 指针传递2 引用传递3 字符串变量的函数传递与指针传递3.1 错误示范参考 1 值传递 值传递包括实实在在的值传递和指针传递,指针传递...
  • C语言中将二维数组作为函数参数来传递

    万次阅读 多人点赞 2018-03-07 20:17:25
    c语言中经常需要通过函数传递二维数组,有三种方法可以实现,如下:方法一, 形参给出第二维的长度。例如:#include &lt;stdio.h&gt;void func(int n, char str[ ][5] ){ int i; for(i = 0; i &lt; ...
  • 如果想要在函数传递一个一维数组作为参数,有三种方式来声明函数形式参数,这三种声明方式的结果是一样的,因为每种方式都会告诉编译器将要接收一个整型指针 方式 1 形式参数是一个指针 void myFunction(int *...
  • C语言中结构体作为函数参数,有两种方式:传值和传址。 1.传值时结构体参数会被拷贝一份,在函数体内修改结构体参数成员的值实际上是修改调用参数的一个临时拷贝的成员的值,这不会影响到调用参数。在这种情况下,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 799,428
精华内容 319,771
关键字:

C函数传递