C语言语法规则(下)

八、函数

函数在C语言起到至关重要的作用,像我们的printf和scanf本身也是一个函数。只不过在stdio.h中就已经定义了这个函数,所以可以直接调取stdio.h头文件来使用printf和scanf函数。但是C语言中的库函数并不能完全满足我们的需求,这时,我们可以自己编写一个函数来满足需求。例如计算阶乘的函数。

int fact(int n)
{
    if(n==0||n==1)
        return 1;
    else
        return n*fact(n-1);
}

当我们写好了计算阶乘的函数之后,就可以直接调取这个函数了。

int main()
{
	int n;
	scanf("%d",&n);
	for(int i=0;i<=n;i++)
	{
		printf("%d\n",fact(i));
	}
	return 0;
}

return的作用

return的作用在于计算函数的值。例如,return a;的意思是把a的值传递给这个函数,然后退出函数。注意,除了void类型的函数,其他的函数都应该有且只有一个返回值。

main函数的return值

main函数的return值比较特殊,在Linux系统下,main函数的返回值主要用来检测程序运行的正常性。一般而言,main函数返回0表示正常退出,返回其他值则表明程序异常退出。不过具体的设置由程序员来决定。

递归算法

递归算法的核心在于自己调用自己,上面提到的求阶乘函数就用到了递归算法。

递归算法的优点

递归算法的优点在于代码较为简洁、易懂,能够较好的理解其中的原理。

递归算法的缺点

在递归层次比较大的时候,容易爆栈(栈溢出,Stack Overflow)

九、结构体与面向对象基础

struct数据类型

结构体数据类型是一个数据类型,可以包含一系列数据类型,例如

struct Test
{
    int a;
    float b;
    char c[20];
}

然后我们sizeof(struct Test)一下,就会发现这个结构体所占字节大小为28字节,这说明Test结构体所占字节为28个字节,具体分析如下:

int 4字节;

float 4字节;

char 1字节×20=20字节

加起来一共28字节。

typedef自定义数据类型

typedef struct Test
{
    int a;
    float b;
    char c[20];
}test;

typedef定义了一个数据类型test

然后,调用这个数据类型

int main()
{
    test test01;
    test01.a=1;
    test01.b=1.0;
    printf("%d\n",test01.a);
    printf("%d\n",test01.b);
}

代码里的test是声明的自定义数据类型,然后我们就定义了一个test01的变量。

在test01变量里使用点号“.”运算符,引用结构体内部变量就是test01.a

在test的结构体数据类型中,a是int类型,b是float类型,所以我们在引用结构体内部变量的时候要看清楚内部变量的数据类型,然后用正确的格式进行输入、运算和输出。

面向对象基础

程序有面向过程和面向对象两种思想。面向过程指的是程序一步一步地运行下去,通过过程去描述程序的功能;面向对象则是把问题分成一个个主体,主体具有什么属性,能够实现什么功能,等等。

面向对象的三大特性:封装、继承、多态

1. 封装(Encapsulation)

核心思想:隐藏对象的内部细节,仅对外暴露必要的接口。
目的:提高安全性(防止外部随意修改内部数据)、简化使用(用户无需关心内部实现)。

2. 继承(Inheritance)

核心思想:子类继承父类的属性和方法,并可以扩展或修改功能。
目的:代码复用,建立类之间的层次关系。

3. 多态(Polymorphism)

核心思想:同一操作作用于不同对象,可以有不同的行为。
目的:提高代码灵活性,支持统一接口处理不同对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值