C语言中将二维数组作为函数参数来传递
c语言中经常需要通过函数传递二维数组,有三种方法可以实现,如下:
方法一, 形参给出第二维的长度。
例如:
#include <stdio.h>
void func(int n, char str[ ][5] )
{
int i;
for(i = ; i < n; i++)
printf("/nstr[%d] = %s/n", i, str[i]);
} void main()
{
char* p[];
char str[][] = {"abc","def","ghi"};
func(, str);
}
方法二,形参声明为指向数组的指针。
例如:
#include <stdio.h>
void func(int n, char (*str)[5] )
{
int i;
for(i = ; i < n; i++)
printf("/nstr[%d] = %s/n", i, str[i]);
} void main()
{
char* p[];
char str[][] = {"abc","def","ghi"};
func(, str);
}
方法三,形参声明为指针的指针。
例如:
#include <stdio.h>
void func(int n, char **str)
{
int i;
for(i = ; i < n; i++)
printf("/nstr[%d] = %s/n", i, str[i]);
}
void main()
{
char* p[];
char str[][] = {"abc","def","ghi"};
p[] = &str[][];
p[] = str[];
p[] = str[];
func(, p); }
附加,第三种传参方式说明:在函数中使用传参过来的二维数组(指针)进行数组取值的时候不能使用(array[i][j])这种形式来取值。应该将二维数组看成一个一维数组,使用array[i * j + j]这种形式来进行取值。
个人理解:这是因为在传参的时候,我们将array[][]数组当成二级指针来进行传递,所以我认为他是将数组的属性退化成了二级指针的属性,因此这里并不能使用array[i][j]这种方式来进行数组取值。输出格式如下
int tag = ;//tag标记,在方法中输出二维数组时所需要的标记
printf("使用传递过来的二维数组参数输出二维数组\n");
for(i = ; i < rows*columns; i++) {
printf("%d,", array[i]);
if(tag == columns-) {
tag = ;
printf("\n");
} else {
tag++;
}
}
C语言中将二维数组作为函数参数来传递的更多相关文章
- C-指针,二级指针,二维数组作为函数参数使用,C语言链表(详解)
一级指针 int *p; //表示定义一个int型(4字节)的指针p &p //表示p自身的地址位置 p ...
- C语言二维数组作为函数参数
设有整型二维数组a[3][4]如下:0 1 2 34 5 6 78 9 10 11 它的定义为: int a[3][4]={{0,1,2,3},{4,5,6,7} ...
- C语言二维数组作为函数的参数
前言:今天在实现装配线调度程序时候,用到了二维数组,并将其作为函数的参数.在写程序的时候,遇到一些问题,即二维数组做函数的参数应该如何正确表示.我写程序的错误如下程序所示: #include < ...
- C语言学习笔记 (005) - 二维数组作为函数参数传递剖析
前言 很多文章不外乎告诉你下面这几种标准的形式,你如果按照它们来用,准没错: //对于一个2行13列int元素的二维数组 //函数f的形参形式 f(int daytab[2][13]) {...} / ...
- C语言中如何将二维数组作为函数的参数传递
今天写程序的时候要用到二维数组作参数传给一个函数,我发现将二维数组作参数进行传递还不是想象得那么简单里,但是最后我也解决了遇到的问题,所以这篇文章主要介绍如何处理二维数组当作参数传递的情况,希望大家不 ...
- C语言之二维数组
二维数组 还是一个数组,只不过数组中得每一个元素又是一个数组 1). 声明语法 类型 数组名[行][列]; 例: int nums[2][3];//2行3列的二维数组,保存的数据类型是int类型 c ...
- C语言基础--二维数组
二维数组概念: 数组中的每一个元素又是一个数组, 那么这个数组就称之为二维数组,二维数组是特殊的一维数组. 二维数组格式: 元素类型 数组名称[一维数组的个数][每个一维数组的元素个数]; 元素类型 ...
- C++中将二维数组(静态的和动态的)作为函数的参数传递
在C++编程中,我们经常将数组作为参数传递到另一个函数,数组的维数不同,传递方式也不同,此处将作一个总结,包括一维静态.动态数组,二维静态.动态数组. 一,一维数组(静态.动态一维数组) 1, 一维数 ...
- C语言 字符二维数组(多个字符串)探讨 求解
什么是二维字符数组? 二维字符数组中为什么定义字符串是一行一个? “hello world”在C语言中代表什么? 为什么只能在定义时才能写成char a[10]="jvssj" ...
随机推荐
- 使用word2vec对中文维基百科数据进行处理
一.下载中文维基百科数据https://dumps.wikimedia.org/zhwiki/并使用gensim中的wikicorpus解析提取xml中的内容 二.利用opencc繁体转简体 三.利用 ...
- 《Effective C++》结语
九月的这三周把<Effective C++>重读了一遍,尽量以自己的理解,用最简单的(其实太深入也不会写)的语言把书里面的重点都写了下来. 由于之前找实习占用了大量的时间,写的博客都比较水 ...
- phpfor函数和foreach函数
PHP for 循环 PHP While 循环 PHP 函数 PHP for 循环执行代码块指定的次数. PHP for 循环 如果您已经提前确定脚本运行的次数,可以使用 for 循环. 语法 for ...
- 理解PyTorch的自动微分机制
参考Getting Started with PyTorch Part 1: Understanding how Automatic Differentiation works 非常好的文章,讲解的非 ...
- C++入门经典-例3.17-使用while循环进行计算
1:代码如下: // 3.17.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> usin ...
- redis在分布式中的使用
作者:孤独烟 来自:http://rjzheng.cnblogs.com/ 为什么要用redis:为了并发和性能,使用redis做为缓冲 使用redis有什么缺点 主要是四个问题 (一)缓存和数据库双 ...
- 2018-2019-2 20175215 实验一《Java开发环境的熟悉》实验报告
一.实验内容及步骤 1.使用JDK编译.运行简单的Java程序 cd code进入code文件夹 mkdir 20175215exp1创建20175215exp1文件夹 ls查看当前目录 cd 201 ...
- jQuery file upload --Multiple File Input Fields in One Form
The plugin can be applied to a form with multiple file input fields out of the box. The files are se ...
- python 逻辑运算符and or
Python中逻辑运算符与C.C++.Golang等语言不太一样. 简单记录下. 1. 都是真或第一个真,第二个假 >>> a = 1 >>> b = 2 > ...
- 浏览器端-W3School-HTML:HTML DOM Table 对象
ylbtech-浏览器端-W3School-HTML:HTML DOM Table 对象 1.返回顶部 1. HTML DOM Table 对象 Table 对象 Table 对象代表一个 HTML ...