概述
数组指针与二维数组配合应用
#include<stdio.h>
int getThedata(int (*p)[4],int hang,int lie){
int data;
data = *(*(p+hang)+lie);
return data;
}
void tipsInputhanglie(int *pm,int *pn){
printf("输入行列值:n");
scanf("%d%d,",pm,pn);
puts("done!");
}
int main(){
int arr[3][4] = {{11,22,33,44},{55,66,77,88},{99,00,11,22}};
int ihang,ilie;
int data;
//1.提示用户输入行列值
tipsInputhanglie(&ihang,&ilie);
//2.找出相应的行列值的那个数
data = getThedata(arr,ihang,ilie);
//3.打印
printf("%d行%d列的值是:%dn",ihang,ilie,data);
}
函数指针实战---回调函数
#include<stdio.h>
#include<stdib.h> //该头文件用于调用exit
/*
* 定义两个数:
* a,b;当输入1指令的时候,判断a>b
* 当输入2指令的时候,判断a<b;
* 当输入3指令的时候,求a+b的和
*/
int getMax(int data1,int data2)
{
return data1>data2 ? data1:data2;
}
int getMin(int data1,int data2)
{
return data1<data2 ? data1:data2;
}
int getSum(int data1,int data2)
{
return data1+data2;
}
int dataHandler(int data1,int data2,int,int)
{
int ret;
ret = (*pfunc)(data1,data2);
return ret;
}
int main(){
int a = 10;
int b = 20;
int cmd;
int ret;
int (*pfunc)(int,int);
printf("请输入1(max),2(min),3(sum)");
scanf("%d",&cmd);
switch(cmd){
case 1:
pfunc = getMax;
break;
case 2:
pfunc = getMin;
break;
case 3:
pfunc = getSum;
//优化
default:
printf("输入指令错误@1 2 3n");
exit(-1);
}
ret = dataHandler(a,b,pfunc)l;
printf("ret = %dn",ret);
return 0;
}
指针数组练习
#include<dtdio.h>
int getMax(int data1,int data2)
{
return data1>data2 ? data1:data2;
}
int getMin(int data1,int data2)
{
return data1<data2 ? data1:data2;
}
int getSum(int data1,int data2)
{
return data1+data2;
}
int dataHandler(int data1,int data2,int,int)
{
int ret;
ret = (*pfunc)(data1,data2);
return ret;
}
int main(){
int a = 10;
int b = 20;
int ret;
//给指针函数数组来一个初始化
int (*pfunc[3])(int ,int)={
getMax,
getMin,
getSum,
};
for(i=0;i<3;i++){
ret = *pfunc[i](a,b);
printf("ret = %dn",ret);
}
return 0 ;
}
最后
以上就是有魅力小霸王为你收集整理的指针深入认识案例的全部内容,希望文章能够帮你解决指针深入认识案例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复