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指针提高的更多相关文章
- C和指针小结(C/C++程序设计)
C和指针 相关基础知识:内存的分配(谭浩强版) 1.整型变量的地址与浮点型/字符型变量的地址区别?(整型变量/浮点型变量的区别是什么) 2.int *p,指向整型数据的指针变量. 3.通过指针变量访问 ...
- 对B+树与索引在MySQL中的认识
[TOC] 概述 本质:数据库维护某种数据结构以某种方式引用(指向)数据 索引取舍原则:索引的结构组织要尽量减少查找过程中磁盘I/O的存取次数 B树 满足的条件 d为大于1的一个正整数,称为B-Tre ...
- iOS多线程杂论
iOS多线程的分布 (1) NSThread (2) NSOperation (3) GCD 现在对下面三个进行一个个的分析,希望那里说得不对的地方希望简友们帮我指点一二. 1,NSThread 优点 ...
- MongoDB 及 Mysql 背后的 B/B+树
索引是数据库常见的数据结构,每个后台开发人员都应该对索引背后的数据结构有所了解. 本文通过分析B-Tree及B-/+Tree数据结构及索引性能分析及磁盘存取原理尝试着回答一下问题: 为什么B-Tree ...
- leveldb学习:skiplist
leveldb中的memtable仅仅是一个封装类,它的底层实现是一个跳表. 跳表是一种基于随机数的平衡数据结构.其它的平衡数据结构还有红黑树.AVL树.但跳表的原理比它们简单非常多.跳表有点像链表, ...
- 从入门到自闭之Python--MySQL数据库的多表查询
多表查询 连表: 内连接:所有不在条件匹配内的数据们都会被剔除连表 select * from 表名1,表名2 where 条件; select * from 表名1 inner join 表名2 o ...
- C语言提高 (4) 第四天 数组与数组作为参数时的数组指针
1昨日回顾 const int 和 int const是一样的 const char *p;值不变 char * const p; 指针不能变 编译器对参数的退化: 第三种模型: 三级指针 三级指针局 ...
- C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间
1 作业讲解 指针间接操作的三个必要条件 两个变量 其中一个是指针 建立关联:用一个指针指向另一个地址 * 简述sizeof和strlen的区别 strlen求字符串长度,字符数组到’\0’就结束 s ...
- C语言提高 (2) 第二天 用指针对字符串进行操作
2 昨日回顾 p++: (把地址转换成整型 加上它所指向的数据的大小 3指针成立条件和间接赋值 条件一:有两个变量 其中至少一个是指针 条件二:建立关联 条件三:间接操作 4间接操作的例子 5间接操作 ...
随机推荐
- Oracle数据库SQL优化
SQL优化的最终目的是用户体验-在最短时间内让用户在页面数据.因此,执行时间是SQL优化的重要指标.在SQL查询中,I/O操作最占系统性能的.I/O操作量越大,时间越久.减少I/O操作量是优化SQL的 ...
- 剑指Offer12 数组奇数调整至偶数前
/************************************************************************* > File Name: 12_Reorde ...
- 五.CSS盒子模型
所谓盒模型,就是浏览器为每个HTML元素生成的矩形盒子.即HTML页面实际上就是由一系列盒子组成.这些盒子是按照可见版式在页面上排布的.并由三个属性进行控制:position属性,display属性, ...
- Joson的简单用法
Josn实体类如下: public class Result { public int StatusCode { get; set; } public string Message { get; se ...
- 【网络收集】获取JavaScript 的时间使用内置的Date函数完成
var mydate = new Date(); mydate.getYear(); //获取当前年份(2位) mydate.getFullYear(); //获取完整的年份(4位,1970-???? ...
- shell语法基础
一.变量 1.linux大小写敏感,变量取名要注意大小写.可以通过变量名前面加$来访问变量的内容.可以通过使用read命令来将用户输入的值赋给一个变量. 2.给变量赋值时,如果字符串中包含空格,就必须 ...
- lamp环境的配置
转载请注明原作者出处 write by xiaoyang 一. 先决条件 系统:RHEL Server6.5 工具:MySQL.MySQL Server.PHP.PHP-MySQL.HTTPD等 ...
- Iframe跨域_ASP.NET
1.描述: A系统 需要 调用 B系统的页面,被调用的B系统的页面b.html内部嵌套了iframe框架c.aspx地址页 2.问题呈现: ie浏览器下 Chrome浏览器下 追踪 3.问题原因: X ...
- C#中调用API
介绍 API( Application Programming Interface ),我想大家不会陌生,它是我们Windows编程的常客,虽然基于.Net平台的C#有了强大的类库,但是,我们还是不能 ...
- JAVA:数组,排序,查找<4>
一.数组 1.一维数组 (1).数组的定义 数据类型 数组名[]=new 数据类型[大小] public class Demo1 { public static void main(String[] ...