精华内容
下载资源
问答
  • 二维数组传参

    2021-03-27 20:13:56
    二维数组定义:char buf[7][1024] = { 0 }; 函数定义:void ReadData(fstream& file, char buf[][1024]){//XXXX} 函数调用:ReadData(file, buf); Q:为什么函数定义时,二维数组的形参是:buf[][1024]呢? A...
    二维数组定义:char buf[7][1024] = { 0 };
    
    函数定义:void ReadData(fstream& file, char buf[][1024]){//XXXX}
    函数调用:ReadData(file, buf);

    Q:为什么函数定义时,二维数组的形参是:buf[][1024]呢?

    A:二维数组实质上是多个指向一维数组的指针,1024即一维数组的长度,如果不指定第二维参数的长度,就会是这样(int[]),那指针指向的数组长度就无法被知晓,具体实参就无法匹配形参,导致编译不通过。

    展开全文
  • C语言一维数组、二维数组传参 传递普通参数 float add2num(float num1, float num2); int main() { float num1, num2, num3; num1 = 1.1; num2 = 2.2; num3 = add2num(num1, num2); printf("num3 is %.2f\n", ...

    传递普通参数

    float add2num(float num1, float num2);
    int main()
    {
        float num1, num2, num3;
        num1 = 1.1;
        num2 = 2.2;
        num3 = add2num(num1, num2);
        printf("num3 is %.2f\n", num3);
        return 0;
    }
    float add2num(float num1, float num2)
    {
        float num3;
        num3 = num1 + num2;
        return num3;
    }
    

    传递一维数组

    float *addNumArr1d(float num1, float* arr1);
    int main()
    {
        float num1;
        num1 = 1.1;
        float arr1[2] = {4.4, 5.5};
        float *result_arr;
        result_arr = addNumArr1d(num1, arr1);
        printf("result_arr[0] is %.2f\n", *result_arr);
        printf("result_arr[1] is %.2f\n", result_arr[1]);
        return 0;
    }
    float *addNumArr1d(float num1, float* arr1)
    {
        //static float result_arr[sizeof(arr1) / sizeof(arr1[0])];
        float* result_arr;
        result_arr = (float*)malloc(sizeof(arr1) / sizeof(arr1[0]) * sizeof(float));
    
        result_arr[0] = num1 + arr1[0];
        result_arr[1] = num1 + arr1[1];
    
        return result_arr;
    }
    

    传递二维数组

    float *addNumArr2d(float num1, float (*arr2)[2]);
    // 二维数组需要定义列的长度,此处取2
    // float *addNumArr2d(float num1, float arr2[][2]); // 效果相同
    int main()
    {
        float num1;
        num1 = 1.1;
        float arr2[2][2] = {{1, 2}, {3, 4}};
        result_arr = addNumArr2d(num1, arr2);
        printf("result_arr[0] is %.2f\n", *result_arr);
        printf("result_arr[1] is %.2f\n", result_arr[1]);
        return 0;
    }
    float *addNumArr2d(float num1, float (*arr2)[2])
    // 二维数组需要定义列的长度,此处取2
    // float *addNumArr2d(float num1, float arr2[][2]); // 效果相同
    {
        static float result_arr[sizeof(arr2[0]) / sizeof(arr2[0][0])];
    
        result_arr[0] = num1 + arr2[0][0];
        result_arr[1] = num1 + arr2[1][1];
    
        return result_arr;
    }
    

    参考:
    [1] 函数返回指针/数组
    [2] 传递二维数组
    有问题请联系lxiong13@outlook.com

    展开全文
  • 字符串二维数组传参

    千次阅读 2016-12-01 13:24:00
    字符串二维数组传参
    #include<stdio.h>
    #include<string.h>
    int set(char* (*a)[2], int num)
    { 
        int i=0; 
        for(int i = 0; i< num; i++)
        {
            printf("key = %s, value = %s\n", *(a[i]), *(a[i]+1));
        }
        return 0; 
    }
    
    int main()
    {
        int num = 3;
        char* sendbuf[num][2];
        sendbuf[0][0] = "Year";
        sendbuf[0][1] = "2016";
        sendbuf[1][0] = "Month";
        sendbuf[1][1] = "11";
        sendbuf[2][0] = "Day";
        sendbuf[2][1] = "30"; 
        set(sendbuf, num); 
        return 0;
    }


    输出:

    key = Year, value = 2016
    key = Month, value = 11
    key = Day, value = 30


    展开全文
  • 关于二维数组传参

    2016-07-18 21:52:00
    今天朋友遇到二维数组传参的问题,我便也跟着看了看,顺便也在网上查了点资料。 一维数组的传参比较容易,在这里就不介绍了。常用的都是二维数组,那么二维数组的传参一般分为三种方式: 第一种方式是直接传递数组...

    今天朋友遇到二维数组传参的问题,我便也跟着看了看,顺便也在网上查了点资料。

    一维数组的传参比较容易,在这里就不介绍了。常用的都是二维数组,那么二维数组的传参一般分为三种方式:

    第一种方式是直接传递数组,但是需要标明第二维的值,如a[][3];

    第二种方式是传递指针数组,同样也需要标明第二维的值,如(*a)[3];

    第三种方式是传递指针;

    具体实现请参考代码:

    //关于二维数组传参的问题
    #include<stdio.h>
    #define N 3
    
    //第一种方式:直接传递数组
    void getsum1(int[][N]);
    
    //第二种方式:传递指针数组
    //void getsum2(int (*)[N]);
    
    //第三种方式:传递指针
    void getsum3(int **,int,int);
    
    int main()
    {
        int a[N][N]={1,2,3,
                     4,5,6,
                     7,8,9};
        getsum1(a);
      //getsum2(a);
        getsum3((int**)a,N,N);
        return 0;
    }
    void getsum1(int a[][N])         //方式1
    //void getsum2(int (*a)[N])      //方式2
    {
        int i,j;
        int sum=0;
        for(i=0;i<N;i++)
            for(j=0;j<N;j++)
                sum+=a[i][j];        //以数组形式访问
              //sum+=*(*(a+i)+j);    //以指针形式间接访问
        printf("%d\n",sum);
    }
    void getsum3(int **a,int rows,int cols)   //方式3
    {
        int i,j;
        int sum=0;
        for(i=0;i<N;i++)
            for(j=0;j<N;j++)
                sum+=*((int*)a+i*rows+j);  //这里需要进行(int*)强制转化,不能直接用参数名a
        printf("%d\n",sum);
    }
               

    查资料也是自己学习的过程,加深了对二维数组的认识。以上如有不准确之处,还望指出。

    转载于:https://www.cnblogs.com/oulton/p/5682773.html

    展开全文
  • 二维数组传参问题

    2019-06-21 20:08:33
    二维数组传参 第一种方法 #include<stdio.h> int Sort_Two_Array(int buff[][5],int num)//直接传参第一种引用方法------ { //需要在函数中定义一个指针存放--首行元素地址 int i=0;int j=0;int temp; ....
  • 指针数组和数组指针 指针数组:是指一个数组里面装着指针,也即指针数组是一个数组; ...二维数组传参 形参为二维数组 声明 void function(int a[m][n]);//函数声明 void function(int (&a)[m
  • C语言中,二维数组的参数传递。 例如: char str[5][100]; 如果作为参数传递,内有详细示例。 三种传参示例供参考。
  • 关于二维数组传参做形参 二维数组的存储方式是和一维数组没什么区别,但是用二维数组做参数,它的形参该怎样写?要注意的是:函数中的形参其实就相当于一个声明,并不产生内存分配,形参的目的就是要让编译器...
  • [C语言]二维数组传参的格式(详细+总结) 2018年11月30日 10:57:38最本质最简单阅读数:95 喜欢就为我点赞,评论加收藏。 转载请标明出处[link]https://blog.csdn.net/qq_43868654/article/details/84641383 初遇二...
  • 维数组传参 1.在一个数组中查找一个数 #include <stdio.h> #include <stdlib.h> int main(){ int arr[4] = { 9, 5, 2, 7 }; int Tofind = 2; for (int i = 0; i < 4;i++){ if (arr[i] != To...
  • 一、一维数组传参 #include<stdio.h> #include<stdlib.h> #include <stdio.h> void test(int arr[])//ok? yes {} void test(int arr[10])//ok? yes {} void test(int *arr)//ok? yes {} void ...
  • 维数组传参 我们知道,在C语言中,当数组作为实参进行传递时,本质上就是指针在做实参(传递地址值)。如下所示 /* 打印数组的元素值 */ void printArr(int* arr,int len){ for (int i = 0; i<len; i++) { ...
  • 二维数组传参和一维差不多,格式为f(b)和void f(b[][N]); 注意,在任何函数中修改b的值,都是修改了实参的值; 类比树的遍历,易知本题需要使用图的DFS搜索; 注意,树的分层结构决定了下一个遍历是必定未访问过的...
  • C++中用二维数组传参时形参该怎样写 [转] 二维数组的存储方式是和一维数组没什么区别,但是用二维数组做参数,它的形参该怎样写?要注意的是:函数中的形参其实就相当于一个声明,并不产生内存分配,形参的目的...
  • 但是如何动态分配一个二维数组呢?像这样: int **pa = new int[3][3] ?测试一次 => 显然这种分配方式是不正确的: 在尝试新的方法之前,我们需要首先了解二维数组在内存中的存储结构: ...
  • 无论 一/二维数组 传递参数本质 都是首地址的传送, 无法带下标传送,只能单独传送下标(下标本质就是地址偏移量),或约定下标长度! 二维数组实际也还是一维数组,只是加了第二维寻址下标,在内存中存储同一维一样...
  • C 二维数组传参

    千次阅读 2018-11-15 09:02:45
    今天写程序的时候要用到二维数组作参数传给一个函数,我发现将二维数组作参数进行传递还不是想象得那么简单里,但是最后我也解决了遇到的问题,所以这篇文章主要介绍如何处理二维数组当作参数传递的情况,希望大家不...
  • #include<iostream> using namespace std; ..."请输入二维数组的行数(小于10)"<<endl; cin>>len1; cout<<"请输入二维数组的列数(小于10)"<<endl; cin&g...
  • C>补充知识点,数组,数组传参,正则表达式

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 460
精华内容 184
关键字:

二维数组传参