Linuxc学习(2)

1.递归函数

1.1作用:用来计算阶乘。

计算阶乘,使用递归函数进行调用。


#include<stdio.h>
int mul(int n)
{
   if(n==1||n==0)
   {
     return 1;
   }
   else
   {
    return n*mul(n-1);
   }

}
int main()
{
   int n;
   printf("请输入计算的阶乘:\n");
   scanf("%d",&n);
   printf("%d的阶乘是%d\n",n,mul(n));
	return 0;
}

2.结构体

2.1定义:就是一类简单的数据类型的集合,凑成了结构体,也可以将结构体看做是一种数据类型。

2.2格式

基本框架
Struct AA
{
Char name[20];
Int age;
};

2.3访问

输入:scanf(“%s%d”,a.name,&a.age);

输出:printf(“%s%d”,a.name,a.age);

2.4&的使用场景

判断结构体里面用简单的数据类型定义的变量,是普通变量还是一个指针变量(指针常量)

结构体变量只是提供了一个访问结构体内部成员的方法,具体的输入是由结构体内部成员的输入方式决定的。

2.5普通方式

2.5.1定义结构体的同时定义结构体变量

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct aa  
{
char name[20];
int age;
}p;
struct bb
{
int score;
struct aa b;
}q;
int main()
{
	scanf("%s%d%d",q.b.name,&q.b.age,&q.score);
printf("%d\n",q.score);
printf("%s%d\n",q.b.name,q.b.age);
return 0;
}

2.5.2定义结构体,再定义结构体变量

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct aa  
{
char name[20];
int age;
};
struct bb 
{
int score;
struct aa b;
};
int main()
{  struct aa p;
	struct bb q;
	scanf("%s%d%d",q.b.name,&q.b.age,&q.score);
printf("%d\n",q.score);
printf("%s%d\n",q.b.name,q.b.age);
return 0;
}

2.5.3取别名

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct aa  
{
char name[20];
int age;
}d;
typedef struct bb 
{
int score;
struct aa b;
}f;
int main()
{           f p;
	    d q;
	scanf("%s%d%d",q.b.name,&q.b.age,&q.score);
printf("%d\n",q.score);
printf("%s%d\n",q.b.name,q.b.age);
return 0;
}

2.6结构体指针(指向结构体变量的指针)

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct aa  
{
char name[20];
int age;
}p;
struct bb
{
int score;
struct aa b;
}q;
int main()
{
	struct  bb *d=&q;
	scanf("%s%d%d",d->b.name,&d->b.age,&d->score);
printf("%d\n",d->score);
printf("%s%d\n",d->b.name,d->b.age);
return 0;
}

2.7结构体嵌套

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct aa  
{
char name[20];
int age;
}p;
struct bb
{
int score;
struct aa *b;
}q;
int main()
{
	struct  bb *d=&q;
	d->b=&p;
	scanf("%s%d%d",d->b->name,&d->b->age,&d->score);
printf("%d\n",d->score);
printf("%s%d\n",d->b->name,d->b->age);
return 0;
}

3.共用体

3.1格式

Union AA
{
Char name[20];
Int age;
Folat height;
};

3.2与结构体的区别

结构体:单独分配一片空间

共用体:共同使用一片空间

4.枚举

4.1作用:相当于给数字起别名。

5.字节对齐

5.1结构体规则:在64OS,一般最大按照8个字节为基准,在32OS,按照4个字节为基准,如果没有超过4各字节(8个字节),就按照结构体内最大的那个数据类型去分配,并且采用查漏补缺。

5.2共用体规则:共用同一片空间(最大的那一片空间)。

6.函数指针

6.1格式:数据类型 * = &变量名 (普通变量)

6.2数据类型:int (int ,int )

6.3推导:Int (*p)(int ,int) = &add;------>p = &add;

6.4 函数名是函数的入口地址:Int (*p)(int ,int) = add;--------->p = add; 

7.make

7.1定义:make是一个工程管理器,用来管理多文件联合编译的,将不同的.c(有某种关系)文件编译成一个可执行文件。

7.2处理步骤:预处理,编译,汇编,链接。

7.3写法:目标:依赖;[tab]关系表

7.4规则:Make会根据时间戳管理文件。

7.5多文件makefile的流程

7.51:把子函数单独拆开放到.c文件,然后主函数放到一个.c文件里面

7.52:自定义头文件

           以stdio.h为例

           #include <stdio.h>  代表的是系统的头文件,去/usr/include寻找需要的头文件

          #include “stdio.h”  代表的是用户自定义的头文件,去用户工作的路径下寻找

7.53:定义头文件 (test.h)

注意:头文件名字与定义文件名一致
#ifndef _TEST_H_
#define _TEST_H_

//防止头文件被重复定义
1.头文件(库函数的头文件)
2.结构体/共用体
3.宏定义
4.枚举
5.子函数的声明

#endif

7.54:Makefile(只需要在里面写上可执行文件,.o,   .c文件三个之间的关系)

7.6makefile嵌套

7.61:Src:makefile

7.62:bin

7.63:执行

8.系统预定义变量实现makefile

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值