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

    2020-04-29 22:50:27
    int minimum(int values[10])//首先构造一个函数,这个声明返回值是整型,并且形式参数是一个含有10个元素的数组 int main(void) { int scores[10], i, minScore; printf("enter 10 scores\n"); for (i = 0; i &...

    1、

    #include<stdio.h>
    int minimum(int values[10])//首先构造一个函数,这个声明返回值是整型,并且形式参数是一个含有10个元素的数组
    
    int main(void) {
    	int scores[10], i, minScore;
    	printf("enter 10 scores\n");
    	for (i = 0; i < 10; i++)
    		scanf_s("%i", &scores[i]);//在主函数里循环输入一个数组
    		minScore = minimum(scores);//传递数组参数
    

    2、

    #include<stdio.h>
    int minimum(int values[], int numberofElements)//传递一个数组参数,一个普通形参,形参控制数组长度
    
    int main(void)
    {
    	int array1[5] = { 157,-28,-37,26,10 };//数组初始化
    	
    	printf("array1 minimum is %i\n", minimum(array1, 5));//调用函数,传递数组参数和普通形参
    
    
    展开全文
  • C语言 传递数组参数

    千次阅读 2019-04-14 09:24:33
    #include <stdio.h> /* 函数声明 */ double getAverage(int arr[], int size); int main () { /* 带有 5 个元素的整型数组 */ int balance[5] = {1000, 2, 3, ... /* 传递一个指向数组的指针作为参数 */...
    #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;
    }
    
    展开全文
  • 数组参数属于指针参数,指针参数即时传址参数(或叫引用参数), 如果想在函数中修改参数的值, 这是唯一的途径.如果把数组当作参数, 不管愿意与否, 它就是指针, 指向第一个值的指针.1. 数组参数就是指向第一个元素的...

    最佳答案

    数组只能通过指针传递,不能通过值传递。

    数组参数属于指针参数,指针参数即时传址参数(或叫引用参数), 如果想在函数中修改参数的值, 这是唯一的途径.

    如果把数组当作参数, 不管愿意与否, 它就是指针, 指向第一个值的指针.

    1. 数组参数就是指向第一个元素的指针: #include

    void getArr(int p[], int si);

    int main(void)

    {

    int ns[] = {1,2,3,4,5};

    getArr(ns, sizeof(ns)/sizeof(ns[0]));

    getchar();

    return 0;

    }

    void getArr(int p[], int si) {

    int i;

    for (i = 0; i < si; i++) {

    printf("%d\n", p[i]);

    }

    }

    2. 干脆直接声明为指针: #include

    void getArr(int *p, int si);

    int main(void)

    {

    int ns[] = {1,2,3,4,5};

    getArr(ns, sizeof(ns)/sizeof(ns[0]));

    getchar();

    return 0;

    }

    void getArr(int *p, int si) {

    int i;

    for (i = 0; i < si; i++) {

    printf("%d\n", p[i]);

    }

    }

    3. 即使你在形参中指定维数也不起作用: #include

    void getArr(int p[2], int si);

    int main(void)

    {

    int ns[] = {1,2,3,4,5};

    getArr(ns, sizeof(ns)/sizeof(ns[0]));

    getchar();

    return 0;

    }

    void getArr(int p[2], int si) {

    int i;

    for (i = 0; i < si; i++) {

    printf("%d\n", p[i]);

    }

    }

    4. 既然是指针, 其值就有被修改的可能: #include

    void getArr(int p[], int si);

    int main(void)

    {

    int ns[] = {1,2,3,4,5};

    size_t i;

    getArr(ns, sizeof(ns)/sizeof(ns[0]));

    for (i = 0; i < sizeof(ns)/sizeof(ns[0]); i++) {

    printf("%d\n", *(ns+i));

    }

    getchar();

    return 0;

    }

    void getArr(int p[], int si) {

    int i;

    for (i = 0; i < si; i++) {

    p[i]++;

    }

    }

    5. 如果是字符数组, 它自己能判断数组尾界: #include

    void getArr(char p[]);

    int main(void)

    {

    char ns[] = "ABCDEFG";

    getArr(ns);

    getchar();

    return 0;

    }

    void getArr(char p[]) {

    int i;

    for (i = 0; p[i]; i++) {

    printf("%c: %d\n", p[i], p[i]);

    }

    }

    最佳答案由网友  夺命薯条  提供

    展开全文
  • C语言数组参数传递问题

    千次阅读 2019-04-28 10:36:37
    数组传递参数的话,如果直接传指针过去。对数组参数的操作会改变原始变量的值。如果不想影响原始变量的话,需要在函数里面定义新的局部数组变量。赋值给局部数组变量,对局部数组变量进行操作。 #include <...

    数组传递参数的话,如果直接传指针过去。对数组参数的操作会改变原始变量的值。如果不想影响原始变量的话,需要在函数里面定义新的局部数组变量。赋值给局部数组变量,对局部数组变量进行操作。

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    int SetArray(char *array)
    {
    	array[0]++;
    	array[1]++;
    	printf("array[0] = %d\n",array[0]);
    	printf("array[1] = %d\n", array[1]);
    
    	return 0;
    }
    
    int SetArrayB(char *array)
    {
    	char arrayB[2] = {0};
    	memcpy(arrayB, array, 2);
    	arrayB[0]++;
    	arrayB[1]++;
    	printf("arrayB[0] = %d\n", array[0]);
    	printf("arrayB[1] = %d\n", array[1]);
    
    	return 0;
    }
    
    int PrintArray(char *array)
    {
    	printf("array[0] = %d\n", array[0]);
    	printf("array[1] = %d\n", array[1]);
    
    	return 0;
    }
    
    int main()
    {
    	char array[2] = {3, 4};
    	
    	SetArrayB(array);
    	PrintArray(array);
    
    	SetArray(array);
    	PrintArray(array);
    
    	getchar();
    	return 0;
    }

    程序结果:

    展开全文
  • C语言数组参数退化为指针谈起 Contact me: Blog -&gt; https://cugtyt.github.io/blog/index Email -&gt; cugtyt#qq.com, cugtyt#gmail.com GitHub -&gt; Cugtyt@GitHub 知乎专栏 -&...
  • 首先抛结论:1:C语言中,当一维数组做函数参数时,编译器总是把它解析成一个指向其首元素的指针。2:实际传递数组大小与函数形参指定的数组大小没有关系。然后举例说明:下面是一个元素交换函数,把数组array【i...
  • C语言数组的总结

    万次阅读 多人点赞 2018-05-26 13:43:41
    目录 一维数组的创建和初始化 ...数组作为函数参数 1.一维数组的创建和初始化 数组的创建:在创建数组时,我们必须定义数组的类型和大小,数组的大小不能为0,数组中的元素类型都是相同的。 eg: int arr
  • C语言传递数组到函数的一个发现

    千次阅读 2012-02-04 12:56:04
    今天在调试程序的时候突然发现,将数组首地址和数组长度做为参数传递给函数时,将数组长度作为下标访问数组, 得到的是数组的长度。 环境: 操作系统: Centos 5.6 编译工具:gcc 4.1.2 代码如下: #include ...
  • 测试数组作为参数传递给函数,在函数中访问和修改。并且,这表明C语言的数组作为参数传递给函数时,是作为...因为只传递数组给函数,进而想要在函数中获得数组大小,在网上搜了一下,答案居然是“No way”…… 另...
  • C语言数组参数与指针参数我们都知道参数分为形参和实参。形参是指声明或定义函数时的参数,而实参是在调用函数时主调函数传递过来的实际值。一、一维数组参数1、能否向函数传递一个数组?看例子:void fun(char a[10...
  • C语言数组作为参数传递

    万次阅读 2018-11-24 14:06:24
    数组可以由整个数组当作函数的参数,也可以由数组中的某个元素当作函数的参数: 1、整个数组当作函数... 1、数组名作为函数实参传递时,函数定义处作为接收参数数组类型形参既可以指定长度也可以不指定长度...
  • 设有整型二维数组a[3][4]如下:0 1 2 34 5 6 78 9 10 11它的定义为:int a[3][4]={{0,1,2,3},{...前面介绍过,C语言允许把一个二维数组分解为多个一维数组来处理。因此数组a可分解为三个一维数组,即a[0]、a[1]、a[2...
  • C语言数组C语言中比较特殊的一种数据类型。这种数据类型由元素类型和元素个数共同决定。并且元素计数是从0开始到数字大小减去1。数组数组名是数组的名字。在使用它的时候需要注意C语言中的规定。首先我们来看...
  • (1)将一维数组名 iExamC 作为参数传递情况, void func( int p [ ], int n ){ //函数中引用 ,直接定义int i; p[ i ] //函数调用方法:func( iExamC,4 );}  (2 ) 将一维数组名 iExamD 作为参数传递...
  • C语言数组名作为参数进行函数传递在普通变量或下标变量作函数参数时,形参变量和实参变量是由编译系统分配的两个不同的内存单元。在函数调用时发生的值传送是把实参变量的值赋予形参变量。在用数组名作函数参数时...
  • C语言数组作为函数参数的问题

    千次阅读 2015-07-02 00:04:58
    C语言中数组作为函数参数运行的时候, 函数在执行的过程中,数组参数是否像其他类型的参数(例如:int类型)不发生改变的执行呢? 我们首先看一个示例,然后观看他的打印结果,然后分析原因二,代码示例和运行结果/* C语言中...
  • 二维数组作为参数传递到函数有三种方式:1:直接传递2:指针传递,将二维数组的第一行传递3:利用二级指针进行传递实参为str,str表示排长,表示一维数组的起始地址,所以形参也必须是一个基类型为指向一维数组的指针...
  • #include <stdio.h> #include <...//指针传递 int main() { double array[2][2][2]={{{1,2},{3,4}},{{-1,-2},{-3,-4}}}; printf("%f\n",foo(array[0][0],2));//第一片的指针 printf("%f\n".
  • 整个数组作为参数传入函数中的时候,实参为数组名。 可是在指针与数组一章中讲到数组名是首元素的地址,相当于&array[0],这样的话传入的就是首元素地址了 请问为什么函数在识别数组时遇到...
  • C语言数组参数传递

    万次阅读 多人点赞 2018-01-29 19:57:23
    在学习C语言的过程中遇到数组作为参数传递的问题 一维数组:#include int test2(int a[]){ for(int i=0;i;i++){ printf("%d",a[i]); } } int main(){ int a[5] = {1,2,3,4,5},*p; p = a; test2(a); } ...
  • 为什么C语言中的数组参数会退化为指针? 退化的意义 1、C语言中只会以值拷贝的方式传递参数 2、当向函数传递数组时: 1)、将整个数组拷贝一份传入函数(不可取的,需要遍历一遍数组,效率会降低) 2)、将数组名...
  • C语言中,数组名作为参数传递给函数时,数组名会退化为指针;需要数组大小时,需要一个参数数组名,另一个传数组大小。 实际上,C语言不支持数组名作为形参来进行调用。例如函数void fun(int a[]),里面的a实际上...
  • python的for循环效率极低,计算速度也慢,比c/c++就慢多了,就a[i]...c语言中代码,编译成Ctype.dll了 float *trans_image_test(int raw_data[]) { static float image_8bit[10]; for (int j = 0; j<10; j = j + 2
  • 以上面的例子为例,我们一般给函数传一个数组参数,按照上面编写代码是绝对没错的,但是,我们编译器,我们的C语言真的是将整个数组传递过去给函数了吗? 如果将代码改为: 但是输出的结果却是: 证明了并...
  • 注:makeSphere()函数返回Sphere结构体,main函数中,调用makeSphere()函数,传递的第一个参数数组传递数组作为指针。
  • 数组元素作函数实参可以向形参传递一个数组元素的值,有时希望在函数中处理整个数组的元素,此时可以用数组名作为函数实参,但是并不是将该数组中全部元素传递给所对应的形参。由于数组名代表数组的首地址,因此...
  • c语言数组、指针、函数传递释义

    千次阅读 2013-07-11 16:49:38
    c语言数组、指针、函数传递释义 c语言数组、指针、函数传递释义 by一月说C 这是个很经典的问题,学C的人可能都会有这个迷茫阶段吧,本人将对这个问题的理解,花了几天时间整理如下,希望大家给予指正。同时也...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 75,244
精华内容 30,097
关键字:

c语言传递数组参数

c语言 订阅