/*********************************************************************************************
注意:函数指针变量与指针函数的区别:
函数指针:指向函数的指针变量
指针函数:返回指针也就是地址的函数他们侧重点不一样
**********************************************************************************************/
//函数指针变量
#if 0
int max(int a,int b)
{
if( a 》 b ) return a;
else return b;
}
void main(void)
{
int x,y,z;
int ( *pfun )(int,int); //定义函数指针变量
ser_init();
printf(“input two numbers:n”);
scanf(“%d%d”,&x,&y);
pfun = max; //把函数名(函数入口地址)赋给函数指针变量
z=(*pfun)(x,y); //调用函数指针变量,实参x和y的值传递给形参a和b
printf(“max=%dn”,z); //形参a和b的值发生交换存储在max函数存储区,因为pfun指针变量指向函数max首地址
} //所以z取得max函数的最大值
#endif
//--------------------------------------------------------------------------------------------
#if 0
//返回指针的函数,函数返回值为地址
char *day(int n)
{
static char *weekday[ ]={ //指针数组由指针元素组成
“illegal day”,
“monday”,
“tuesday”,
“wednesday”,
“thursday”,
“friday”,
“saturday”,
“sunday”
};
if( n《0||n》6) return weekday[0] ; //返回指针元素也就是地址
else return weekday[n];
}
void main(void)
{
while(1)
{
if(!bflag)
{
int i;
// char *day(int n); //指针函数声明
ser_init();
printf(“input no.:n”);
scanf(“%d”,&i);
printf(“num=%d---》day=%sn”,i,day(i));
bflag = 1;
}
}
}
#endif
//---------------------------------------------------------------------------------
#if 0
void main(void)
{
char string[]=“i love you!”; //字符数组访问字符串
ser_init();
printf(“string = %s”,string);
}
void main(void)
{
char *string=“i love you! my baby”; //字符指针变量访问字符串
ser_init();
printf(“string = %s”,string);
}
#endif
//---------------------------------------------------------------------------------
#if 0
//选择法排序(由小到大排序)
void selectsort(char *name[],int n) //形参指针数组---由指向字符的指针元素组成
{
int i,j,k; //k为中间变量,暂存下标号
char *ps; //中间指针变量,暂存值
for(i=0;i { // x0 x1 x2 x3 。。.x(n-1) x(n)
k = i; //从下标0开始选择一个数,然后在后面的序列里比较,
//如果有小于前面的那个数就交换下标号
for(j=i+1;j {
if(strcmp(name[k],name[j])》0 ) k=j;
}
if(k!=i)
{ //后面序列有大于前面那个数
ps=name[i]; //name[]中的元素为指针地址
name[i]=name[k];
name[k]=ps;
}
}
}
void print(char *name[],int n)
{
int i;
for(i=0;i}
void main(void)
{
while(1)
{
if(!bflag)
{
int n;
static char *name[]={“china”,“american”,“englangd”,“janpanese”,“germany”,“france”,“australian”};
//定义指针数组:数组中的每个元素为一个指针
n=7;
ser_init();
selectsort(name,n); //指针数组的首地址传递给形参变量
print(name,n);
printf(“%c”,*name[0]);
bflag = 1;
}
}
}
#endif
//----------------------------------------------------------------------------------------
#if 0
//选择法排序(由小到大排序)
void selectsort(int *name[],int n) //形参指针数组---由指向字符的指针元素组成
{
int i,j,k; //k为中间变量,暂存下标号
int *ps; //中间指针变量,暂存值
for(i=0;i { // x0 x1 x2 x3 。。.x(n-1) x(n)
k = i; //从下标0开始选择一个数,然后在后面的序列里比较,
//如果有小于前面的那个数就交换下标号
for(j=i+1;j {
// if( strcmp(name[k],name[j]) 》 0 ) k=j;
}
if(k!=i)
{ //后面序列有大于前面那个数
ps=name[i]; //name[]中的元素为指针地址
name[i]=name[k];
name[k]=ps;
}
}
}
void print(int *name[],int n)
{
int i;
for(i=0;i}
void main(void)
{
while(1)
{
if(!bflag)
{
int n;
static int *name[]={11,22,33,44,55,66};
//name[0]=0xaa;
//name[1]=0xbb;
//name[2]=0xcc;
//name[3]=0xdd;
//name[4]=0xee;
//name[5]=0xff;
//定义指针数组:数组中的每个元素为一个指针
n=20;
ser_init();
selectsort(name,n); //指针数组的首地址传递给形参变量
print(name,n);
bflag = 1;
}
}
}
#endif
//---------------------------------------------------------------------------------------
#if 0
//指向指针变量的指针变量
void main(void)
{
while(1)
{
if(!bflag)
{
int x,*p,**pp; //pp为 指向整型的指针变量 的指针变量
ser_init();
printf(“input one number:n”);
scanf(“%d”,&x);
p=&x;
// p=&x;
pp=&p;
// q=&x;
printf(“%dn”,*p); //变量x的值
printf(“%dn”,**pp); //变量x的值
bflag=1;
}
}
}
#endif
Apple Watch之后,Jawbone等厂商路在何方?
【世说芯品】Microchip发布业界能效最高的中端FPGA工业边缘协议栈、更多核心库IP和转换工具,助力缩短创新时
拥有一台RAKsmart服务器可以做哪些很酷的事情?
两大重磅消息 意味着VR/AR产业C端产业链正进一步完善
浅谈开关稳压器的噪声特性
C语言教程之函数指针变量与指针函数的区别(下篇)
华为云灾备方案,为何备受企业青睐?
乔安户外摄像机怎么样 安防类智能家居中必不可少的户外监控
云计算助力下 远程医疗成本不断下降
gd32的全系列芯片有哪些?
回顾霍e通助力批发零售的介绍和分析
汽车电子技术:带你了解发动机三种热循环方式
液位开关有哪几种
未来人工智能会不会像机械姬这么聪明?
随着人工智能与安防的进一步融合 或将成就一个真正的智能监控时代
华为P10闪存门的背后!供应链之殇+核心技术缺失,三星成赢家!
电力工程建设监督检查方式_电力工程建设监督检查步骤
为什么只有视频才是运营商向“内容”转型的方向?
如何检测地下水管漏水,振动传感器+无线发射模式
NMOS管防电源反接电路