第十五天 C语言 指针--二维数组 指针---函数

指针--二维数组  

#include<stdio.h>
void Find(int (*a)[4],int row)
{
    int i,j;
    for(i=0;i<row;i++)
    {
        for(j = 0;j<4;j++)
        {
            if(*(*(a+i)+j) %3 == 0)
            {
                printf("%d\n",*(*(a+i)+j));  //找出数组中整除3的数
            }
        }
    }
}
int main()
{
    int a[4][4] = {1,2,5,7,8,9,3,4,6,10,16,12,11,13,15,14};

    Find(a,4);
    return 0;
}

指针---二维字符型数组

例:

char (*p)[10] = s; //p指向二维数组s 


char[10] s1[3]; //二维数组 //此时的二维数组的元素 是一个一维字符型数组 
                //定义一个存放 字符串 的一维数组 


char *p = "hello"; //p的类型 char *  
                   //char *的指针变量p 相当于代表一个字符串 

char* pstr[3]= {"hello","world","china"}; //数组 --- 数组中存放是 各个字符串的地址
      //地址 ---存放这地址数据的数组 --- 指针的数组 ---指针数组

排序练习

void sort(char **p,int len)
{
    int i = 0;
    int j=0;
    for(i = len-1;i>0;i--)
    {
        for( j=0;j<i;j++)
        {
            if(strcmp(*(p+j),*(p+j+1))>0)
            {
                char *o = *(p+j);
                *(p+j) = *(p+j+1);
                *(p+j+1) = o;
            }
        }
    }
}

 找最大值

char *Findmaxstr(char **p,int len)
{
    int i = 0;
    char *max = *p;
    for(i = 0;i <len ;i++)
    {
        if(strcmp(max,*(p+i))<0)
        {
            max = *(p+i);
        }
    }
    return max;
}

指针----函数

通过指针的方式来调用函数 
函数名 --- 代表函数的入口地址 
int add(int a,int b)——该函数的数据类型为 int (int , int)

而指针的形式为 基类型 * 变量名

所以用指针指向函数可写为 Int (*p) (int ,int),其主要应用为回调函数

说明

1.可以定义一个函数类型的指针变量,来保存函数的入口地址

2.有了这个指针变量,通过指针变量,来进行函数调用

例:

#include<stdio.h>
int pfunc1(int a,int b)
{
    return a+b;
}

int pfunc2(int a,int b)
{
    return a-b;
}
int pfunc3(int a,int b)
{
    return a*b;
}
int pfunc4(int a,int b)
{
    return a/b;
}
void processData(int a,int b,int (*pfunc)(int,int))
{
    printf("%d\n",(*pfunc)(a,b));
}
int main()
{
    int a,b;
    scanf("%d %d",&a,&b);
    processData(a,b,pfunc1);

    return 0;
}

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值