数组参数和指针参数

author author     2022-08-07     564

关键词:

1.C语言中只会以值拷贝的方式传递参数

2.当向函数传递数组时,将数组名看做常量指针传数组首元素地址

3.二维数组参数同样存在退化的问题,二维数组可以看做是一维数组,二维数组中的每个元素是一维数组

4.二维数组参数中第一维的参数可以省略

5.C语言中无法向一个函数传递任意的多维数组

6.为了提供正确的指针运算,必须提供除第一维之外的所有维长度

7.限制:一维数组参数-必须提供一个标志数组结束位置的长度信息

        二维数组参数-不能直接传递给函数

        三维或更多维数组参数-无法使用

#include <stdio.h>

void access(int a[][3], int row)
{
    int col = sizeof(*a) / sizeof(int);
    int i = 0;
    int j = 0;
    
    printf("sizeof(a) = %d
", sizeof(a));
    
    for(i=0; i<row; i++)
    {
        for(j=0; j<col; j++)
        {
            printf("%d
", a[i][j]);
        }
    }
}

int main()
{
    int a[3][3] = {{0, 1, 2}, {3, 4, 5}, {6, 7, 8}};
    
    access(a, 3);
}


c之数组参数和指针参数(三十一)

...p;      我们在前面讲了在C语言中,数组参数会退化为指针。那么这是为什么呢?在C语言中只会以值拷贝的方式传递参数,当向函数传递数组时,不是将整个数组拷贝一份传入函数而是将数组名看做常量指... 查看详情

数组参数和指针参数实例

1.#include<stdio.h>voidaccess(inta[][3],introw){   intcol=sizeof(*a)/sizeof(int);   inti=0;   intj=0;      printf("size 查看详情

c ++对象数组+带有引用和指针的参数

】c++对象数组+带有引用和指针的参数【英文标题】:c++objectarray+argumentwithreferenceandpointer【发布时间】:2017-03-1720:27:11【问题描述】:我不明白第二个论点。它到底是什么?最重要的是,他(程序员)用它来创建一个新的Object对... 查看详情

c语言进阶玩转指针——指针的高阶玩法!(代码片段)

文章目录前言一、字符指针二、指针数组和数组指针1.指针数组2.数组指针2.1.数组指针是什么?2.2.&数组名和数组名的区别2.3.数组指针的使用三、数组参数与指针参数1.一维数组参数2.二维数组参数3.一级指针传参4.二级指... 查看详情

c语言数组(指针数组用法|命令行参数处理)(代码片段)

文章目录一、指针数组用法(命令行参数处理)二、完整代码示例一、指针数组用法(命令行参数处理)main函数是操作系统与应用程序交互的入口,main函数的char*argv[]参数和char**env参数,都是由操作系统提供的;char**env参数是系统配置的... 查看详情

第1次作业

...参数(角色互换)指针作为函数的参数返回多个值指针、数组和地址间的关系使用指针进行数组操作数组名(指针)作为函数参数(冒泡排序)指针和字符串的关系字符串和字符指针常用字符串处理函数作业要求一(20分)完成... 查看详情

使用指针数组作为函数的参数

】使用指针数组作为函数的参数【英文标题】:usinganarrayofpointersasaparameterofafunction【发布时间】:2016-03-0718:37:49【问题描述】:so试图创建一个指向对象的指针数组并将其传递给函数,但出现错误。我已经声明了一个数组。shapes*... 查看详情

memset 中的第一个参数传递数组或指针

】memset中的第一个参数传递数组或指针【英文标题】:firstparameterinmemsetpassingarrayorpointer【发布时间】:2010-08-1304:32:04【问题描述】:gcc4.4.4c89指针与数组不同。但是数组可以衰减为指针。我只是在使用memset,它的第一个参数是一... 查看详情

详解c语言指针(代码片段)

文章目录1.字符指针2.指针数组3.数组指针3.1数组指针的定义3.2&数组名和数组名的区别3.3数组指针的使用4.数组参数,指针参数4.1一维数组传参4.2二维数组传参4.3一级指针传参4.4二级指针传参5.函数指针6.函数指针数组7.指向... 查看详情

二维数组指针作为函数参数传递

以前二维数组作为函数参数传递我都是这么写的voiddef(inta[][10])。传递一个二维数组a,(其中第二维要确定大小)其实想一想挺合理的...后来,发现还有这种写法voiddef(int(*a)[10]);/************************************************Author:guanjunCrea... 查看详情

将数组传递给函数形式参数

】将数组传递给函数形式参数【英文标题】:passinganarraytoafunctionformalparameter【发布时间】:2015-03-3012:42:36【问题描述】:我对指针和数组有一些疑问。如果我错了,请纠正我。1)我在网上读到有两种将数组传递给函数的方法。其... 查看详情

02指针进阶(代码片段)

目录1.本章重点2.字符指针 3.指针数组4.数组指针4.1数组指针的定义4.2&数组名VS数组名 4.3数组指针的使用 5.数组参数,指针参数5.1一维数组传参5.2二维数组传参 5.3一级指针传参 5.5二级指针传参6.函数指针7.函数指针数组... 查看详情

将数组动态分配到带有指针参数的函数中

】将数组动态分配到带有指针参数的函数中【英文标题】:Dynamicallocationofanarrayintoafunctionwithpointerparameters【发布时间】:2018-07-0903:16:03【问题描述】:我在通过一系列函数完成通过指针传递数组时遇到问题。我使用动态分配创建... 查看详情

传递给函数的数组参数不是常量指针吗?

】传递给函数的数组参数不是常量指针吗?【英文标题】:Isanarrayargumentpassedtoafunctionnotaconstantpointer?【发布时间】:2012-04-0108:45:02【问题描述】:考虑代码:voidfoo(chara[])a++;//worksfine,getscompiled//...现在,考虑一下:voidfoo()chara[50];a... 查看详情

无法使用双指针作为函数参数传递二维数组[重复]

】无法使用双指针作为函数参数传递二维数组[重复]【英文标题】:Unabletopasstwodimensionalarrayusingdoublepointerasfunctionargument[duplicate]【发布时间】:2016-05-2802:35:56【问题描述】:我正在尝试使用双指针将二维数组传递给函数,但是编... 查看详情

当参数之一是指针数组时,如何从 C# 调用 C++ DLL

】当参数之一是指针数组时,如何从C#调用C++DLL【英文标题】:HowtocallC++DLLfromC#whenoneoftheparametersisanarrayofpointers【发布时间】:2017-11-2723:32:24【问题描述】:我有一个DLLpinC++,它接受两个参数,类似于C中的main()函数:参数数量,... 查看详情

part6数组指针与字符串6.2数组作为函数的参数6.3对象数组6.4基于范围的for循环

 6.2数组作为函数的参数数组元素作实参,与单个变量一样。数组名作参数,形、实参数都应是数组名(实质上是地址),类型要一样,传送的是数组首地址。对形参数组的改变会直接影响到实参数组。//6-2使用数组名作为函... 查看详情

如何创建带有参数的成员函数指针数组?

】如何创建带有参数的成员函数指针数组?【英文标题】:Howdoyoucreateanarrayofmemberfunctionpointerswitharguments?【发布时间】:2013-12-2015:33:34【问题描述】:我正在尝试为模糊控制器创建一个跳转表。基本上,我有很多函数可以接收一... 查看详情