码迷,mamicode.com
首页 > 编程语言 > 详细

C语言——指针习题

时间:2015-06-04 18:50:02      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:

写一篇好博文很难

为了更好的理解指针中几个不容易清楚的概念:指针数组,数组指针,函数指针,指针函数,利用函数指针回调函数。

1.使用指针数组,用不定长的字符串初始化,最后一个字符串以@结尾,输出所有的字符串,并删除最后的@字符。

例如:

输入:aaaaa bbbbb abcdefg asdf@

输出:

aaaaa

bbbbb

abcdefg

asdf  

 1 #include <stdlib.h>
 2 #include <string.h>
 3 int main(int args,const char *argv[])
 4 {
 5     char *p[10] = {NULL};
 6     int cnt = 0;//记录输入了多少个字符串
 7     //申请堆内存空间
 8     for(int i=0;i<10;i++)
 9     {
10         //申请一个100个char类型的内存空间
11         p[i] = (char *)malloc(100*sizeof(char));
12         //判断申请成功
13         if(!p[i])
14         {
15             return -1;
16         }
17         scanf("%s",p[i]);
18         cnt++;
19         //判断字符串最后一个字符是否位 ‘@‘ 是:替换位‘\0‘
20         int len = (int)strlen(p[i]);
21         if(*(*(p+i)+(len-1)) == @)
22         {
23             *(*(p+i)+(len-1)) = \0;
24         }
25 //        if(p[i][len-1] == ‘@‘)
26 //        {
27 //            p[i][len-1] = ‘\0‘;
28 //        }
29         //当读取到单个字符位‘\n‘时,跳出循环
30         if(getchar() == \n)
31         {
32             break;
33         }
34     }
35     
36     for(int i=0;i<cnt;i++)
37     {
38         printf("%s\n",p[i]);
39     }
40     return 0;
41 }

 2.

利用函数指针回调函数

随意定义三个函数,利用函数指针调用该三个函数,输入一个n,打印n次该函数

技术分享
 1 #include <stdlib.h>
 2 #include <string.h>
 3 void p_world(void)
 4 {
 5     printf("world\n");
 6 }
 7 void p_hello(void)
 8 {
 9     printf("hello\n");
10 }
11 void p_welcome(void)
12 {
13     printf("welcome\n");
14 }
15 //利用函数指针回调以上的三个函数
16 void print(void (*pfunc)(void),int cnt)
17 {
18     for(int i=0;i<cnt;i++)
19     {
20         pfunc();
21     }
22 }
23 int main()
24 {
25     int n = 0;
26     printf("回调次数:");
27     scanf("%d",&n);
28     //申明一个指针数组,存放函数名(函数地址)
29     void *pf[3] = {p_world,p_hello,p_welcome};
30     char *str[3] = {"p_world","p_hello","p_welcome"};
31     char *inputstr = NULL;
32     inputstr = (char *)malloc(100*sizeof(char));
33     if(!inputstr)
34     {
35         return -1;
36     }
37     printf("回调的函数名称:");
38     scanf("%s",inputstr);
39     for(int i=0;i<3;i++)
40     {
41         if(!strcmp(str[i], inputstr))
42         {
43             print(pf[i], n);
44         }
45     }
46     //释放内存空间
47     free(inputstr);
48     inputstr = NULL;
49     return 0;
50 }
View Code

 

C语言——指针习题

标签:

原文地址:http://www.cnblogs.com/BeyondAverage0908/p/4552349.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!