【C生万物】 初识篇(02)

 欢迎来到 Claffic 的博客 💞💞💞                               👉 专栏:《C生万物 | 先来学C》👈

前言:

上期向大家介绍了 字符串,转义字符,注释,两种语句,函数,数组,操作符 等知识,这篇博客继续带大家初识C语言,我们开始吧!


目录

❤️11.常见关键字

11.1 typedef 

11.2 static

11.2.1修饰局部变量

11.2.2修饰全局变量

11.2.3 修饰函数

🧡12. #define 定义常量和宏

💛13.指针

13.1内存

 13.2指针变量的大小

💙14.结构体


11.常见关键字

 常见关键词一览~

先不要紧张,关键字很友好哒,先看看它们的样子吧~

下面把其中两个挑出来讲解:

11.1 typedef 

typedef 即 type-define ,类型定义,理解为类型重命名

 可以看到,这里我把 int 重命名为 zhx ,num1 和 num2 是同一种类型

11.2 static

在C语言中:

static 是用来修饰变量和函数的 

11.2.1修饰局部变量

尝试看下面两段代码:

//代码1
#include <stdio.h>
void test()
{
	int i = 0;
	i++;
	printf("%d ", i);
}
int main()
{
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		test();
	}
	return 0;
}
//代码2
#include <stdio.h>
void test()
{
	//static修饰局部变量
	static int i = 0;
	i++;
	printf("%d ", i);
}
int main()
{
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		test();
	}
	return 0;
}

代码1结果:

1 1 1 1 1 1 1 1 1 1

代码2结果:

1 2 3 4 5 6 7 8 9 10 

原因就是 static 修饰的变量 i 不可被修改,积累了++;

结论:
static修饰局部变量改变了变量的生命周期
让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束 

11.2.2修饰全局变量

main 函数外直接定义变量,称为全局变量。

看两段代码:

//代码1
include<stdio.h>
//add.c文件中:
int g_val = 2023;
//test.c文件中:
int main()
{
	printf("%d\n", g_val);
	return 0;
}
//代码2
#include<stdio.h>
//add.c文件中:
static int g_val = 2022;
//test.c文件中:
int main()
{
	
	printf("%d\n", g_val);
	return 0;
}

 代码1可以正常编译,代码 2 编译异常,出现连接性错误

原因是代码 2 中 static 修饰的变量只可以在 add.c 这一个文件中使用,这也是 static 的魅力所在。

结论:
一个全局变量被static修饰,使得这个全局变量只能在本源文件内使用,不能在其他源文件内使用。

11.2.3 修饰函数

类似于修饰全局变量,直接看结论:

结论:
一个函数被static修饰,使得这个函数只能在本源文件内使用,不能在其他源文件内使用。

12. #define 定义常量和宏

//define定义标识符常量
#define MAX 1000
//define定义宏
#define ADD(x, y) ((x)+(y))

比函数简易些 

#include<stdio.h>
int main()
{
  int sum = ADD(2, 3);
  printf("sum = %d\n", sum);
 
  sum = 10*ADD(2, 3);
  printf("sum = %d\n", sum);
 
  return 0;
}

定义后可以像这样直接使用 

13.指针

13.1内存

内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。
所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节
为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址。

可以把内存看成小房子,房子的门牌号就是指针;

变量是创建内存中的(在内存中分配空间的),每个内存单元都有地址,所以变量也是有地址的。 

如何取出变量的地址呢?
这里用到了操作符 & 

#include <stdio.h>
int main()
{
    int num = 10;
    &num;//取出num的地址
    //注:这里num的4个字节,每个字节都有地址,取出的是第一个字节的地址(较小的地址)
    printf("%p\n", &num);//打印地址,%p是以地址的形式打印
    return 0;
}

如何储存地址呢?

需要定义指针变量,就是储存指针的变量

int num = 10;
int *p;//p为一个整形指针变量
p = &num;

用指针修改变量:

#include <stdio.h>
int main()
{
    int num = 10;
    int *p = &num;
    *p = 20;//解引用操作,通过指针访问并修改变量
    return 0;
}

以上举例只是整形指针,可以推广到其他指针类型:

char arr = 'y';
char*ap = &arr;

float i = 3.14;
float*ip = &i;

其实就是在类型后面加 *  

 13.2指针变量的大小

幸运的是,我们可以直接用 sizeof 来计算指针变量的大小

#include <stdio.h>

int main()
{
   printf("%d\n", sizeof(char *));
   printf("%d\n", sizeof(short *));
   printf("%d\n", sizeof(int *));
   printf("%d\n", sizeof(double *));
   return 0;
}

结论:

指针变量的大小取决于地址的大小
32位平台下地址是32个bit位(即4个字节)
64位平台下地址是64个bit位(即8个字节)  

14.结构体

什么是结构体?
简单来讲,就是具有多个特征的个体

结构体是C语言中特别重要的知识点,结构体使得C语言有能力描述复杂类型

就比如描述一个学生,需要 名字,年龄,性别,学号 这几个特征:

struct Stu
{
   char name[20];//名字
   int age;      //年龄
   char sex[5];  //性别
   char id[15]; //学号
};

以上就是结构体的简介和创建。


总结:
到这里 初始C语言 就完结啦,相信你已经收获满满,后期就要开始详细的讲解每个知识点啦 ~ 是不是期待呢?

如果有问题可以直接在评论区留言或者私信哦 ~ 我会一一回应哒!

码文不易 

如果你觉得这篇文章还不错并且对你有帮助,不妨支持一波哦  💗💗💗

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Claffic

赏包辣条~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值