栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言中指针、数组作为作为函数参数使用(总结)附详细示例

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言中指针、数组作为作为函数参数使用(总结)附详细示例

目录
  • 一、简介
  • 二、数组
    • 2.1 一维数组
    • 2.2 二维数组
  • 三、指针
    • 3.1 一级指针
    • 3.2 二级指针

一、简介

本文主要讲述指针、数组和数组指针等做为函数参数进行使用,最后通过具体示例进行快速理解,希望对大家有所帮助。

二、数组 2.1 一维数组

一维数组作为参数传参,直接将地址传进来进行使用。

#include 
#include 

void func(int arr[]){
        int i = 0;
        for(i;i < 5;i++){
                printf("the arr[%d] is :%dn",i,arr[i]);
        }
        return;
}

void main(){
        int arr[5] = {1,2,3,4,5};
        func(arr);
        return;
}

2.2 二维数组

相对于一维数组,二维数组要明确列的值,具体有下面两种类型:

第一类 固定行列传参 : void func(int arr[2][3])
第二类 固定列传参:void func(int arr[][3])
#include 
#include 

//void func(int arr[2][3]){
void func(int arr[][3]){
        int i ,j;
        for(i = 0;i < 2;i++){
                for (j=0;j < 3;j++){
                        printf("the arr[%d][%d] is :%dn",i,j,arr[i][j]);
                }
        }
        return;
}

void main(){
        int arr[2][3] = {1,2,3,4,5,6};
        func(arr);
        return;
}

三、指针 3.1 一级指针

首先指针即存放一个地址,指向的这个地址的类型要根据具体数据进行声明;
如:

int a = 3;
int *p = &a; //将存放整型3的地址赋值给p

以指针数组为例进行解析:

#include 
#include 

void func(int *p){
        int i = 0;
        for(i;i < 5;i++){
                printf("the arr[%d] is :%dn",i,*(p+i));
        }
        return;
}

void main(){
        int arr[5] = {1,2,3,4,5};
        int *p = arr; //arr为数组的首地址
        func(p);
        return;
}

3.2 二级指针

二级指针相对于一级指针的不同是,二级指针将一级指针的地址再存放在定义的二级指针中:

int a = 3;
int *p = &a; //将存放整型3的地址赋值给p,指向一个int数据
int **q = &p; //存放指针p的地址,指向一个指针

使用基本与一级指针类似,用于多级函数传参使用:

#include 
#include 

void func(int **q){
        int i = 0;
        for(i;i < 5;i++){
                printf("the arr[%d] is :%dn",i,*(*q+i));
        }
        return;
}

void main(){
        int arr[5] = {1,2,3,4,5};
        int *p = arr; //arr为数组的首地址
        int **q = &p;
        func(q);
        return;
}

注意:
当申明viod ** 类型的二级指针时,如果要输出,需要先强制转换为特定的类型进行输出,如 int **:

int d = 4;
void * f = (void*)&d;
void ** g = &f;
printf("the **g is :%dn",**((int **)g));

其他相c语言链接:

C语言常见数据类型字节数和打印格式总结

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/968296.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号