@清晰掉 传递数组给函数

一维数组

传递数组给函数的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     printf("Marks before sorting\n");
10     for(i = 0; i < 5; i++)
11           printf("%d ", marks[i]);
12     printf("\n");
13      
14     sort(marks, 5);
15     printf("Marks after sorting\n");
16     for(i = 0; i < 5; i++)
17           printf("%d ", marks[i]);
18     printf("\n");
19      
20     system("pause");
21 }
22  
23 void sort(int x[], int m)
24 {
25      int i, j , t;
26       
27      for(i = 1; i <= m-1; i++)
28         for(j =1; j <= m-i; j++)
29            if(x[j-1] >= x[j])
30            {
31               t = x[j-1];
32               x[j-1] = x [j];
33               x[j] = t;
34            }
35 }

二维数组

1.函数调用时只需传递数组名。

2.在函数定义中,必须使用两个方括号以表明数组为二维的。

3.必须指定数组第二个维的大小。

4.函数原型的定义必须与函数头相同。

//方法一, 形参给出第二维的长度。

//例如:

#include <stdio.h>

void func(int n, char   str[ ][5] )

{

int i;

for(i = 0; i < n; i++)

   printf("\nstr[%d] = %s\n", i, str[i]);

}

void main()

{

char* p[3];

char str[][5] = {"abc","def","ghi"};

func(3, str);

}

//方法二,形参声明为指向数组的指针。

//例如:

#include <stdio.h>

void func(int n, char  (*str)[5] )

{

int i;

for(i = 0; i < n; i++)

   printf("\nstr[%d] = %s\n", i, str[i]);

}

void main()

{

char* p[3];

char str[][5] = {"abc","def","ghi"};

func(3, str);

}

//方法三,形参声明为指针的指针。

//例如:

#include <stdio.h>

void func(int n, char **str)

{

int i;

for(i = 0; i < n; i++)

   printf("\nstr[%d] = %s\n", i, str[i]);

}

void main()

{

char* p[3];

char str[][5] = {"abc","def","ghi"};

p[0] = &str[0][0];

p[1] = str[1];

p[2] = str[2];

     func(3, p);

}

将字符串传递给函数

1.要传递的字符串必须在定义时声明为函数的形参。例如:

void display(char item_name[])

{

  ……

}

2.函数原型必须能表示参数是字符串。对于上面的函数定义,其原型可以写做:

void display(char str[]);

3.函数调用必须带一个无下标的字符串数组名作为其实参。例如:

display(name);

其中,name是在调用函数中已正确声明的字符串数组。

在C语言中,与数组一样,字符串不能按值传递给函数。

时间: 2024-10-29 19:12:27

@清晰掉 传递数组给函数的相关文章

【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

ctypes给扩展模块中的函数传递数组和结构体

传递数组 楔子 下面我们来看看如何使用ctypes传递数组,这里我们只讲传递,不讲返回.因为C语言返回数组给python实际上会存在很多问题,比如:返回的数组的内存由谁来管理,不用了之后空间由谁来释放,事实上ctypes内部对于返回数组支持的也不是很好.因此我们一般不会向python返回一个C语言中的数组,因为C语言中的数组传递给python涉及到效率的问题,python中的列表传递直接传递一个引用即可,但是C语言中的数组过来肯定是要拷贝一份的,所以这里我们只讲python如何通过ctypes给

Shell 向函数传递 数组

Shell 向函数传递 数组

c语言函数传递数组

1.传递数组,打印不出来 #include <stdio.h> void solve() { printf("%d",x[0]); } int main() { int i; for(i=0;i<n;i++) { scanf("%d",&x[i]); printf("%d\n",x[i]); } solve(); return 0; } [Error] error: `x' undeclared (first use i

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

按值传递(按副本传递): 给函数传递变元(参数)时,变元(参数)不会直接传递给函数,二十先制作变元(参数)值的副本,存储在栈上,再使这个副本可用于函数,而不是使用初始值. 例如: #include<stdio.h> void change(int); int main() { int num = 9; change(num); //将num = 9的值复制一份给change中的变量, printf("num = %d\n",num);//change中的值为副本, retu

JavaScript学习笔记【3】数组、函数、服务器端JavaScript概述

笔记来自<JavaScript权威指南(第六版)> 包含的内容: 数组 函数 服务器端JavaScript概述 数组 数组是动态的:根据需要它们会增长或缩减,并且在创建数组时无须声明一个固定的大小或在数组大小变化时无须重新分配空间. 数组可能是稀疏的:索引不一定要连续的,它们之间可以有空缺. 通常,数组的实现是经过优化的,用数字索引来访问数组元素一般来说比访问常规的对象属性要快很多. 数组继承自Array.prototype中的属性,它定义了一套丰富的数组操作方法. 如果省略数组直接量中的某个

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

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

PHP合并数组array_merge函数运算符加号与的区别

两个的区别是:1.数组键名为数字键名时,要合并的两个数组中有同名数字KEY的时候,使用array_merge()不会覆盖掉原来的值,而使用"+"合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值"抛弃"掉(注意:不是覆盖而是保留最先出现的那个值).例子: $array1 = array(1=>'0′);$array2 = array(1=> "data");$result1 = $array2 + $arr

C++中关于二维数组作为函数参数传递的问题

在做数据结构迷宫实验的时候,要生成一个二维数组存储迷宫数据,为了保证程序的模块化,将生成部分单独放进一个函数migongsc()里.大致代码如下: 问题的关键就集中在了如何将主函数中声明的二维数组migong[8][9]传递到自定义函数中去. 耗费了一个晚上的时间,我总共整理出了三种办法: 方法1:模拟编译器寻址(本法来自CSDN博客,原文: http://blog.csdn.net/jatix/archive/2004/08/29/88150.aspx). 大体意思为:将二维数组当作参数的时候