我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 1055|回复: 0

C语言指针(下篇)-嵌入式

[复制链接]

该用户从未签到

1万

主题

1292

回帖

936

积分

管理员

积分
936

社区居民最爱沙发原创达人社区明星终身成就奖优秀斑竹奖宣传大使奖特殊贡献奖

QQ
发表于 2013-7-30 19:01:12 | 显示全部楼层 |阅读模式
接C语言指针(上篇)/*********************************************************************************************注意:函数指针变量与指针函数的区别:函数指针:指向函数的指针变量指针函数:返回指针也就是地址的函数他们侧重点不一样**********************************************************************************************///函数指针变量#if 0int max(int a,int b){if( a > b ) return a;elsereturn 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和bprintf("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] ;//返回指针元素也就是地址elsereturn 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 0void 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<n;j++){if(strcmp(name[k],name[j])>0 )k=j;}if(k!=i){//后面序列有大于前面那个数ps=name;//name[]中的元素为指针地址name=name[k];name[k]=ps;}}}void print(char *name[],int n){int i;for(i=0;i}<n;i++)printf("%sn",name);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<n;j++){//if( strcmp(name[k],name[j]) > 0 )k=j;}if(k!=i){//后面序列有大于前面那个数ps=name;//name[]中的元素为指针地址name=name[k];name[k]=ps;}}}<n;j++)void print(int *name[],int n){int i;for(i=0;i}<n;i++)printf("%dn",name);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</n-1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

论坛开启做任务可以
额外奖励金币快速赚
积分升级了


Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

平平安安
TOP
快速回复 返回顶部 返回列表