C语言:数组参数、指针参数

目录

一.字符指针,指针数组,数组指针简单回顾

二.数组参数、指针参数

一维数组传参

二维数组传参

这里需要注意:

一级指针传参

 思考

 二级指针传参

 思考


一.字符指针,指针数组,数组指针简单回顾

#include<stdio.h>
int main()
{
    //字符指针
    char ch='w';
    char *p=&ch;
    const char* p2="abcdef";
    //指针数组-数组-存放指针的数组
    int *arr[10];
    char *ch[5];
    //数组指针-指针-指向数组
    //int *p3; 整形指针–指向整形的指针
    //char* p4;//字符指针–指向字符的指针
    int arr2[5];//数组
    int (*pa)[5]=&arr2;//取出数组的地址,pa就是一个数组指针
    
    
    return 0;
}

二.数组参数、指针参数

在写代码的时候难免要把【数组】或者【指针】传给函数,那函数的参数该如何设计呢?

一维数组传参

#include<stdio.h>
void test(int arr[10])
{

}
void test (int arr[])
{
    
}
void test(int *arr)
{
    
}
void test2(int *arr[20])
{
    
}
void test2(int *arr[])
{
    
}
void test2(int **arr)
{
    
}
int main()
{
    int arr[10]={0};
    int *arr2[20]={0};
    test(arr);
    test2(arr2);
    
    return 0;
}

上面的六种方法,test函数是对int arr[10]的接收,test2函数是对int *arr[20]的接收

二维数组传参

#include<stdio.h>
void test(int arr[3][5])
{

}
void test (int arr[][5])
{
    
}
int main()
{
    int arr[3][5]={0}
    
    
    return 0;
}

这里需要注意:

二维数组传参,函数形参的设计只能省略第一个[]的数字。
因为对一个二维数组,可以不知道有多少行,但是必须知道一行有多少元素去这样才方便运算。
 

我们知道二维数组,数组名就是首元素地址,而二维数组的首元素其实是第一行,所以还有一种写法

#include<stdio.h>
//void test(int arr[3][5])
//{
//
//}
//void test(int arr[][5])
//{
//
//}
void test(int (*arr)[5])
{

}


int main()
{
    int arr[3][5]={0};
    test(arr);

    return 0;
}

一级指针传参

#include<stdio.h>
void print(int *p,int sz)
{
    int i=0;
    for (i=0;i<sz;i++)
    {
        printf("%d\n",*(p+i));
    }
}
int main()
{
    int arr[10]={1,2,3,4,5,6,7,8,9,0};
    int *p=arr;
    int sz=sizeof(arr)/sizeof(arr[0]);
    print(p,sz);//一级指针p传给函数

}

运行结果是

 思考

当一个函数的参数部分为一级指针的时候,函数能接收什么参数?

比如

用代码解释

#include<stdio.h>
void test1(int *p)
{
    
}
void test2(char *p)
{
    
}
int main()
{
    int a=10;
    int *p1=&a;
    test1(&a);
    test1(p1);
    
    char ch='w';
    char *pc=&ch;
    test(&ch);
    test(pc);
    return 0;
}

 二级指针传参

#include<stdio.h>
void test(int** ptr)
{
    printf("num=%d\n",**ptr);
}
int main()
{
    int n=10;
    int*p=&n;
    int **pp=&p;
    test(pp);
    test(&p);
    return 0;
}

运行结果是

 思考

当函数的参数为二级指针的时候,可以接收什么参数?

解释

 

 

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阳862

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值