初识C语言——C语言基础知识(四)

11.常见关键字


关键字就是被C语言本身使用的,不能作其它用途使用的字。关键字不能用作变量名。

1、关键字auto用于说明自动变量,由于变量声明时默认情况下就是自动变量,所以很少使用。
2、volatile(易变的)表示该变量不经过赋值,其值也可能被改变(例如表示时钟的变量、表示通信端口的变量等)。

下面我会对常用的关键字进行解释讲解 对标红进行重点解释

C语言中的关键字
auto:声明自动变量 一般不使用
double:声明双精度变量或函数
float:声明浮点型变量或函数
int:声明整型变量或函数
short:声明短整型变量或函数
long:声明长整型变量或函数
struct:声明结构体变量或函数
break:跳出当前循环
else:条件语句否定分支(与if连用)
switch:用于开关语句
case:开关语句分支
enum:声明枚举类型
register:声明寄存器变量
typedef:用以给数据类型取别名
char:声明字符型变量或函数
extern:声明外部变量是在其他文件中已经定义过了,可在当前文件使用
return:子程序返回语句(可以带参数,也可不带参数) 

union:声明联合数据类型
const:声明只读变量(常变量)
unsigned:声明无符号类型变量或函数
signed:生命有符号类型变量或函数
continue:结束当前循环,开始下一轮循环
for:一种循环语句(可意会不可言传)
void:声明函数无返回值或无参数,声明无类型指针

default:开关语句中的‘其他’分支
goto:无条件跳转语句
sizeof:计算数据类型长度
volatile:说明变量在程序执行中可被隐含地改变

do :循环语句的循环体
while:循环语句的循环条件
static:声明静态变量

register

register用于告诉编译器将变量存储在CPU的寄存器中,以提高程序的执行效率。使用register关键字声明的变量称为寄存器变量。
使用register关键字声明变量时,需要注意以下几点:
1. 不能对寄存器变量使用&运算符,因为寄存器变量并不一定有一个内存地址。
2. 不能对寄存器变量使用sizeof运算符,因为寄存器变量在内存中没有对应的存储空间。
3. 编译器可以选择是否将变量存储在寄存器中,因此不能强制要求把变量存储在寄存器中。


static

static是C/C++中的一个关键字,它可用于修饰变量、函数和类成员。它的作用取决于它所修饰的对象类型。
1. 修饰变量:当static修饰局部变量时,该变量的生命周期被扩展到整个程序运行期间,但作用域仍然是当前的函数体。这意味着该变量只会被初始化一次,而不是每次函数被调用时都会被初始化。当static修饰全局变量时,该变量的作用域被限制在当前文件中,其他文件无法访问
2. 修饰函数:当static修饰函数时,该函数的作用域被限制在当前文件中,其他文件无法访问。这种函数称为静态函数。
 

#include<stdio.h>
void test() {
	int i = 0;
	i++;
	printf("%d", i);
}
void test1() {
	static int i = 0;
	i++;
	printf("%d", i);
}
int main() 
{
	int i = 0;
	for (i = 0; i < 5; i++) {
		test();//打印结果为11111
	}
	printf("\n");
	for (i = 0; i < 5; i++) {
		test1();//打印结果为12345
	}
	return 0;
}

在没有static修饰时 i 的值出函数时就会被销毁,每次进入都会重新创建并赋值。

而使用static修饰之后, i 出函数后的值不会被销毁,生命周期也扩展到了整个程序运行期间。

12.#define定义常量和宏

#define MAX 100//定义标识符常量
#define ADD(x,y) ((x)+(y))//定义宏
#include<stdio.h>
int main()
{
	int sum = ADD(3, 3);
	printf("%d\n", sum);
	sum = 6 * ADD(3, 3);
	printf("%d", sum);
	return 0;
}

13.指针

内存是计算机中很重要的存储器,计算机中所有程序的运行都是在内存中进行的。

为了更有效的使用内存,于是就把内存划分成一个一个的小单元,每个内存单元大小是一个字节。

为了能更高效的访问到每个单元,于是就给内存单元进行编号,这些编号被称为内存单元的地址。(可形象理解为宿舍楼,地址就像是门牌号内存单元就像是房间)

 指针的使用

例如我们存储一个整形数字15,一个整形在内存中占4个字节(一个整形数字占4个内存单元),在取地址时,拿到的是4个字节中第一个字节的地址。

#include<stdio.h>
int main()
{
    int a = 15;
    int* p = &a;//p是指针变量,这里存放的是a的地址,a是整形,那p就是指向一个int类型的指针,int*是指针类型
    *p = 30;//*解引用操作符,*p就是取地址内的数据,*p也就相当于a
    printf("%d", a);//输出结果为30
    return 0;
}

当然由整形为例也可推广到其他类型,指向的是字符型,那指针类型就是:char*。

指针变量的大小

#include<stdio.h>
int main()
{
	printf("%d", sizeof(int*));
	printf("%d", sizeof(char*));
	printf("%d", sizeof(short*));
	printf("%d", sizeof(double*));
	return 0;
}

运行的结果都是一样的,在32位操作系统是4个字节,在64位操作系统是8个字节

结构体

之前我们了解到数组,使用数组来存储连续的数据,但数组只能存储相同类型数据,而结构体可以存放不同类型的数据。

例如:

struct Stu
{
char name[20];
int age;
char sex[5];
char id[15];
};

结构体初始化

struct Stu s={"zhangsan",20,"男","123456000"};//s是结构体变量,结构体是学生信息,s指代结构体中数据,.是结构体变量访问结构体成员
printf("%s %d %s %s",s.name,s.age,s.sex,s.id);
struct Stu *ps=&s;//ps是指向结构体的指针
printf("%s %d %s %s",ps->name,ps->age,ps->sex,ps->id);//->是结构体指针访问结构体成员

以上便是本期全部内容,初识C语言系列完,后续将持续更新C语言深度解析,本系列是为了使初学者系统了解C语言,便于后续C语言的正式学习。感谢观看!

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值