C语言教程之函数指针变量与指针函数的区别(下篇)

/*********************************************************************************************

注意:函数指针变量与指针函数的区别:

函数指针:指向函数的指针变量

指针函数:返回指针也就是地址的函数他们侧重点不一样

**********************************************************************************************/

 C语言教程之函数指针变量与指针函数的区别(下篇)_设计制作_电源/新能源

//函数指针变量

#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 numbe     rs   :n”);

s     can   f(“%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)

{

sta         TI   c 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;

sta  TI c 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;

sta  TI c 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

57
159
0
93

相关资讯

  1. 1、如何使用数字电位器构建可编程振荡器1230
  2. 2、从监控生产到追溯药品信息,万亿级传感器市场将爆发4531
  3. 3、东莞:发展工业互联网,从制造走向智造4798
  4. 4、物联网新时代,关于安全的5大错误认知2993
  5. 5、智能电网领域怎么运用以太网?513
  6. 6、敏捷的网络助力智慧医疗方案3629
  7. 7、Tizen设400万美元奖金APP开发投资赛914
  8. 8、中国制造业移向海外市场是“溢出”而非“转移”2257
  9. 9、我国工业互联网与智能+已步入落地生根阶段1273
  10. 10、嵌入式开发可以分为哪几类1473
全部评论(0)
我也有话说
0
收藏
点赞
顶部