今天看了两章C语言,于是乎编段程序复习下。
 还是不清楚这些神奇的东西的到底要干嘛用。。。
 敲完后,显得这段代码高大上
 但是,想实现这个程序,需要这么写的复杂吗?==||

 

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#define add(a,b) strcpy(a,b) //带参数的宏定义 int f1(char c[])
{
int n;
printf("%s,请写作一首藏头诗:\n请输入诗歌的行数:\n",c);
scanf("%d",&n);
return n;
} char* fun(int (*fp)(char []),char name[],char head[]) // int (*fp)(char []) 为函数参数
{
char str[20];int i,j;
char **pc;//二级指针
char *test1[20];
int n=(*fp)(name);
for(i=0;i<n;i++)
{
scanf("%s",str);//动态输入多个字符串
test1[i]=(char*)malloc(sizeof(char)*(strlen(str)+1));
//分配len(str)+1个char大小的空间
add(test1[i],str); //宏定义
} pc=test1;//test,即指针数组的数组名 本身也就是 二级指针
for(j=0;j<i;j++)//汉字为两个字符
{
head[2*j]=*(*(pc+j));
//*pc=test1[0] ,*(pc+j)=test1[j],*(*(pc+j))=*(test1[j])
head[2*j+1]=test1[j][1];//=*(*(pc+j)+1))
}
head[2*j]='\0';
return head;
} int main()
{
while(1)
{
char name[20],head[20];
int (*pf)(char []);//指向函数的指针。参数为字符数组,返回值为int
printf("同学,请输入你的姓名:\n");
scanf("%s",name);
pf=f1;//指向函数f1
printf("谜底是:%s\n\n",fun(pf,name,head));//pf作为函数实参
}
return 0;
}

c指针提高的更多相关文章

  1. C和指针小结(C/C++程序设计)

    C和指针 相关基础知识:内存的分配(谭浩强版) 1.整型变量的地址与浮点型/字符型变量的地址区别?(整型变量/浮点型变量的区别是什么) 2.int *p,指向整型数据的指针变量. 3.通过指针变量访问 ...

  2. 对B+树与索引在MySQL中的认识

    [TOC] 概述 本质:数据库维护某种数据结构以某种方式引用(指向)数据 索引取舍原则:索引的结构组织要尽量减少查找过程中磁盘I/O的存取次数 B树 满足的条件 d为大于1的一个正整数,称为B-Tre ...

  3. iOS多线程杂论

    iOS多线程的分布 (1) NSThread (2) NSOperation (3) GCD 现在对下面三个进行一个个的分析,希望那里说得不对的地方希望简友们帮我指点一二. 1,NSThread 优点 ...

  4. MongoDB 及 Mysql 背后的 B/B+树

    索引是数据库常见的数据结构,每个后台开发人员都应该对索引背后的数据结构有所了解. 本文通过分析B-Tree及B-/+Tree数据结构及索引性能分析及磁盘存取原理尝试着回答一下问题: 为什么B-Tree ...

  5. leveldb学习:skiplist

    leveldb中的memtable仅仅是一个封装类,它的底层实现是一个跳表. 跳表是一种基于随机数的平衡数据结构.其它的平衡数据结构还有红黑树.AVL树.但跳表的原理比它们简单非常多.跳表有点像链表, ...

  6. 从入门到自闭之Python--MySQL数据库的多表查询

    多表查询 连表: 内连接:所有不在条件匹配内的数据们都会被剔除连表 select * from 表名1,表名2 where 条件; select * from 表名1 inner join 表名2 o ...

  7. C语言提高 (4) 第四天 数组与数组作为参数时的数组指针

    1昨日回顾 const int 和 int const是一样的 const char *p;值不变 char * const p; 指针不能变 编译器对参数的退化: 第三种模型: 三级指针 三级指针局 ...

  8. C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间

    1 作业讲解 指针间接操作的三个必要条件 两个变量 其中一个是指针 建立关联:用一个指针指向另一个地址 * 简述sizeof和strlen的区别 strlen求字符串长度,字符数组到’\0’就结束 s ...

  9. C语言提高 (2) 第二天 用指针对字符串进行操作

    2 昨日回顾 p++: (把地址转换成整型 加上它所指向的数据的大小 3指针成立条件和间接赋值 条件一:有两个变量 其中至少一个是指针 条件二:建立关联 条件三:间接操作 4间接操作的例子 5间接操作 ...

随机推荐

  1. onInterceptTouchEvent和onTouchEvent举例分析

    首先自定义三个组件,其关系是:MyLayout在最上面,MySubLayout在MyLayout下面,MyView在MySubLayout下面. 一个点击事件进来,首先是DOWN动作,先是MyLayo ...

  2. swift 委托代理传值

    委托代理 1.定义个协议 2.声明一个委托代理 3.指定委托代理,调用委托实现的协议方法 4实现LoadingDelegate协议 代码如下: import UIKit //1.定义个协议 proto ...

  3. 控制Input框输入的为大写字母

    本来我的想法是Jquery来控制的,万万没想到...用Css就可以实现!!!! .toUp input{    text-transform:uppercase; }     感谢:  http:// ...

  4. mongdb Java demo

    接触MONGDB,感觉用起来还挺好.今天做了一个小demo. 一.启动mongdb的服务

  5. linux初学 :linux 常用命令(一)

    首先,是关机/重启命令,仅在虚拟机时使用,实际工作中用不到 reboot 一般不跟参数使用,输入指令即可重启 shutdown 一般需要跟参数,例: shutdown -r 延时多少分钟重启,一般使用 ...

  6. 初识 Asp.Net内置对象之Cookie对象

    Cookie对象 Cookie对象用于保存客户端浏览器请求的服务器页面,也可用于存放非敏感性的用户信息,信息保存的时间可以根据用户的需要经行设置.并非所有的浏览器都支持Cookie,并非数据信息都是以 ...

  7. 社区APP “钱途”漫漫

    花样年曾宣称:2013年“彩生活”物业品牌收入1.85亿,毛利率超过40%:万科万客会APP.龙湖物业APP……大量房地产企业依托物业企业,纷纷瞄准移动互联网.云计算.物联网等高新科技为基础的物业服务 ...

  8. Jquery 格式化时间

    我们常常会通过datetime得到时间,但是网页前台往往会显示不同的时间 如:2013-12-15 2013年12月23日 2013 12 15 等多种显示效果,这就需要我们把时间格式化一下. 下面是 ...

  9. php学习笔记3--php中获取时间与实际时间不符

    问题描述:在php脚本中使用date()获取服务器时间时总是与实际时间相差几个小时. 可能原因:php配置文件中时区的设置出现问题 解决方法: 方法1. php.ini文件中date.timezone ...

  10. (转)Android之接口回调机制

    开发中,接口回调是我们经常用到的. 接口回调的意思即,注册之后并不立马执行,而在某个时机触发执行. 举个例子: A有一个问题不会,他去问B,B暂时解决不出来,B说,等我(B)解决了再告诉你(A)此时A ...