思维导图
数据结构练习
定义一个"简单宏"或宏函数,实现两个数交换
1 #include <stdio.h>
2 #include <string.h>
3 #include <stdlib.h>
4 #define Change(x,y) do{ int temp=x; x=y; y=temp;}while(0)
5 int main(int argc, const char *argv[])
6 {
7 int a=100;
8 int b=200;
9 printf("before change : a=%d b=%d\n",a,b);
10 Change(a,b);
11 printf("after change : a=%d b=%d\n",a,b);
12
13 return 0;
14 }
效果图
定义字符类型指针,指针指向n个连续堆区内存,输入,计算字符串长度
主函数
1 #include "homework_head.h"
2 int main(int argc, const char *argv[])
3 {
4 int n;
5 printf("请输入申请内存的个数");
6 scanf("%d",&n);
7 char *p=Creat(n);
8 printf("请输入要计算的字符串");
9 scanf("%s",p);
10 int length=Strlen(p);
11 printf("%d\n",length);
12 p=free_space(p);
13 return 0;
14 }
自定义函数
4 * @param [ in] 申请的大小
5 * @param [out]
6 * @return 字符数组
7 */
8 char *Creat(int n)
9 {
10 char *p=(char *)malloc(sizeof(char)*n);
11 if(p==NULL)
12 return NULL;
13 return p;
14 }
15
16 /*
17 * function: 计算字符串长度
18 * @param [ in] 字符串首地址
19 * @param [out]
20 * @return 字符串长度
21 */
22 int Strlen(char *p)
23 {
24 int num=0;
25 for(int i=0;*(p+i)!='\0';i++)
26 {
27 num++;
28 }
29 return num;
30 }
31
32
33 /*
34 * function: 释放内存
35 * @param [ in] 指针
36 * @param [out]
37 * @return NULL
38 */
39 char *free_space(char *p)
40 {
41 if(p==NULL)
42 return NULL;
43 free(p);
44 p=NULL;
45 return NULL;
46 }
47
头文件
1 #ifndef __HOMEWORK_HEAD_H__
2 #define __HOMEWORK_HEAD_H__
3
4
5 #include <stdio.h>
6 #include <string.h>
7 #include <stdlib.h>
8
9 char *Creat(int n);
10 int Strlen(char *p);
11 char *free_space(char *p);
12
13
14
15 #endif
16
17
18
效果图