首页 > 其他分享 >二维数组传参要点

二维数组传参要点

时间:2024-08-28 22:52:45浏览次数:7  
标签:传参 function 函数 int 数组名 二维 数组

最近在写代码的时候又一次遇到了需要二维数组传参的操作,捣鼓了半天,总是会指针有问题,上网上查阅了相关资料后,虽然弄懂了,但是后面还是把二维改成一维了。但是呢?还是把相关的学习记录整理下来,以防后续还是需要用上。 这里主要以如何声明函数,如何调用函数,在函数中如何使用来讲解。

形参为二维数组

函数声明

void function(int a[m][n]);//函数声明 
void function(int a[][n]);//不论多少维数组,第一维都可省略。 
//凭什么,第二维就不可省略呢?由编译器的寻址方式决定。 

函数调用

function(a);//函数调用 实参直接写数组名!数组名!(重点)。 
//(注意)function(a[m][n])或function(a[][n])都不可以! 
//话说,写数组名多好,简单轻松。 

函数中使用

*(a[i] + j) //代表第 i 行 第 j 列 *(*(a+i) + j) 
//同上 *((int *)a +i*n +j )
//同上,n表示第二维数组长度,即列宽 
//不管怎么样,a[i][j]不被允许。也是由编译器的寻址方式决定。 

形参为数组指针

函数声明

void function(int (*a)[n]); 
//不是(int *a[n])(指针数组) ,而是(int (*a)[n])(数组指针); 
// 缘由是 [] 的 优先级比 *的大 

函数调用

function(a);//函数调用 实参同样直接写数组名! 
//(注意)function(a[m][n])或function(a[][n])同样都不可以! 

函数中使用

*(a[i] + j) //代表第 i 行 第 j 列 *(*(a+i) + j) 
//同上 *((int *)a +i*n +j )
//同上,n表示第二维数组长度,即列宽 
//a[i][j]不被允许。由编译器的寻址方式决定。 

形参为二级指针

函数声明

void function(int **a,int n);
// n表示第二维数组长度,即列宽 

函数调用

function( (int **)a,int n);
//实参不能为数组名!*与上面相反*!有两个 * ! 
//(注意)function(a)或function((int *)a)不可以! 

函数中使用

*((int *)a +i*n +j )
//只有一种!n表示第二维数组长度,即列宽 
//其他不被允许。由编译器的寻址方式决定。 

参考链接:[C语言]二维数组传参的格式(详细+总结)_c语言传入二维数组-CSDN博客

标签:传参,function,函数,int,数组名,二维,数组
From: https://www.cnblogs.com/tangwc/p/18385670

相关文章

  • Java中的数组用法(复制、替换、查找与排序)
    在Java编程中,数组是一种基础且强大的数据结构,用于存储一组相同类型的元素。本文将深入探讨数组在Java中的用法,并展示如何进行数组的复制与替换、查找以及排序。(这些了解与学习只需要一个IDEA就可以进行练习了 )##数组的声明与初始化在Java中,数组的声明和初始化非常直观。以......
  • leetcode215. 数组中的第K个最大元素,小根堆/快排思想
    leetcode215.数组中的第K个最大元素给定整数数组nums和整数k,请返回数组中第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。你必须设计并实现时间复杂度为O(n)的算法解决此问题。示例1:输入:[3,2,1,5,6,4],k=2......
  • 3217. 从链表中移除在数组中存在的节点
    从链表中移除在数组中存在的节点给你一个整数数组nums和一个链表的头节点head。从链表中移除所有存在于nums中的节点后,返回修改后的链表的头节点。示例1:输入:nums=[1,2,3],head=[1,2,3,4,5]输出:[4,5]解释:移除数值为1,2和3的节点。示例2:输入:nums=[......
  • 代码随想录算法day1-数组1
    题目1704.二分查找题目描述:给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。示例1:输入:nums=[-1,0,3,5,9,12],target=9输出:4解释:9出现在nums中并且下标为4示例2:......
  • 在图片上加二维码,并且添加文字
    //设置响应头,输出图片//header('Content-Type:image/png');$domain=$this->request->domain();//$public=public_path();//echo$domain.'/mask.png';die;//$res=file_get_contents("./ba......
  • 代码随想录算法训练营第一天 | 数组part01:数组理论基础,704. 二分查找,27. 移除元素 97
    数组理论基础数组是存放在连续内存空间上的相同类型数据的集合数组徐璈注意的是:数组的下标都是从0开始的数组内存空间是的地址是连续的正因为舒适的内存空间是连续的,所以在删除和增添元素的时候,需要移动其他元素的地址。在c++中,vector的底层实现是array,严格来说,vector是容......
  • CI3自定义类库,并传参
    1、创建类文件 2、构造函数中使用数组形参,接收传递参数classHehe{//------------------------------------------------------------------------publicfunction__construct($config=array()){p($config);}//-------------------------------......
  • Vue路由传参
    有query传参和params传参query:通过路由传参进行拼接,如下:<router-link:to="{name:'login',query:{id:10110,username:'yansunda'}}">登录组件</router-link>采用编程式导航使用query,使用$router.pushthis.$router.push({......
  • 2024-08-28:用go语言,给定一个从1开始、长度为n的整数数组nums,定义一个函数greaterCount
    2024-08-28:用go语言,给定一个从1开始、长度为n的整数数组nums,定义一个函数greaterCount(arr,val)可以返回数组arr中大于val的元素数量。按照以下规则进行n次操作,将nums中的元素分配到两个数组arr1和arr2中:1.第一次操作将nums[1]加入arr1。2.第二次操作将nums[2]加入arr2。3.对......
  • 【力扣】3145.大数组元素的乘积
    题目描述一个非负整数 x 的 强数组 指的是满足元素为2的幂且元素总和为 x 的最短有序数组。下表说明了如何确定 强数组 的示例。可以证明,x 对应的强数组是独一无二的。数字二进制表示强数组100001[1]801000[8]1001010[2,8]1301101[1,4,8]2310111[1,2,4,16]......