初识C语言06——关键字

C语言中有许多关键字,它们都有特定的含义和用途,以下是一些常见的关键字:

数据类型关键字:

char:用于定义字符型变量,通常占1个字节,用于存储单个字符。

int:定义整型变量,用于存储整数,其大小通常与系统的字长有关。

float:定义单精度浮点型变量,用于存储小数,提供7位左右的有效数字。

double:定义双精度浮点型变量,存储小数时精度更高,提供15位左右的有效数字。

void:表示无类型,常用于函数返回值类型、函数参数或指针类型。

存储类型关键字:

auto:自动存储类型,变量在函数内定义时默认是auto类型,存储在栈区,函数结束后自动释放。

static:静态存储类型,用于修饰变量或函数。修饰变量时,使其在程序运行期间只初始化一次,且存储在静态存储区。

extern:用于声明外部变量或函数,表明该变量或函数在其他文件中定义。

register:建议编译器将变量存储在寄存器中,以提高访问速度,但最终是否存入寄存器由编译器决定。

控制语句关键字:

if、else:哟弄个与条件判断,if后面跟条件表达式,满足条件执行if语句块,否则执行else语句块。

switch、case、default:switch根据表达式的值与case后的常量表达式的值匹配来执行不同的分支,default用于处理所有不匹配的情况。

while、do、while:while先判断条件,后执行循环体;do-while先执行一次循环体,再判断条件。

for:用于循环操作,可指定循环的初始化、条件和迭代部分。

break:用于跳出当前循环或switch语句。

continue:用于跳过本次循环的剩余部分,直接进入下一次循环。

goto:无条件跳转语句,可跳转到程序中指定的标签初。

其他关键字:

typedef:用于为已有的数据类型定义新的别名,增强程序的可读性和可维护性。

struct:用于定义结构体类型,将不同类型的数据组合成一个整体。

union:定义联合体类型,联合体中的成员共享同一块内存空间。

enum:用于定义枚举类型,列举出所有可能的值。C语言的关键字是C语言语法的重要组成部分,在使用时必须严格遵循其语法规则和语义要求,不能将关键字用作变量名或其他标识符。

                                                                                                                                                           

下面简单介绍部分关键字:

1. typedef

定义基本数据类型别名:

可以为基本数据类型创建更具描述性或更方便使用的别名。例如:

typedef int INFEGER;
INTEGER num=10;

这里将int类型定义了一个新的别名INTEGER,使用INTEGER就如同使用int一样来定义变量。

typedef unsigned int uint;
int main()
{
    unsigned int num = 1;
    uint num2 = 2;  //uint等价于unsigned int
    return 0;
}

定义结构体类型别名:

在定义结构体时,经常会使用typedef来简化结构体类型的使用。如:

typedef struct student{
   char name[20];
   int age;
}STUDENT;
STUDENT stu;

这样就可以直接使用STUFENT 来定义结构体变量,而不需要每次都写struct student。

定义指针类型别名

能使指针类型的定义更简洁,增强代码可读性。例如:

typrdef int* INT_POINTER
INT_POINTER ptr;

通过INT_POINTER来定义int类型的指针变量,比直接使用int*在某些情况下更清晰。

2. static:

修饰局部变量:

当static修饰局部变量时,会改变变量的存储方式和声明周期。普通局部变量存储在栈区,函数调用结束后就会被释放;而被static修饰的局部变量存储在静态存储区,在程序运行期间只初始化一次,函数调用结束后不释放,下次进入函数时,其值为上一次函数调用结束时的值。

void test()
{
static int num =0;
num++;
printf("%d\n",num);
}
int main()
{
for (int i=0;i<5;i++){
test();
}
return 0;
}

上述代码中,test函数内的num是静态局部变量,每次调用test函数时,num的值都会在上一次的基础上加1,最终输出1到5的数字。

修饰全局变量:

全局变量本身具有文件作用域和外部链接属性,即可以在其他文件中通过extern声明来访问。但当用static修饰全局变量时,会使其变为内部链接属性,只能在本文件中访问,其他文件无法访问该变量,起到了对全局变量的封装和隐藏作用,避免了不同文件中全局变量名冲突的问题。

修饰函数:

与修饰全局变量类似,static修饰函数时,也会将函数的链接属性变为内部链接。该函数只能在本文件中使用,其他文件无法调用此函数,有利于模块化编程,提高代码的可维护性和可扩展性,使函数的作用范围更局限,降低了程序的耦合度。例如:

//file1.c
#include
static void staticFunc(){
    printf("This is a static function.\n");
}
void callStaticFunc(){
   staticFunc();
}

//file2.c
#include 
//尝试调用file1中的staticFunc函数会报错
//因为ststicFunc具有内部链接属性,只能在file1中访问。
int main(){
//这里无法调用file1中的staticFunc函数
//只能通过file1中的callStaticFunc函数间接调用
return 0;
}

3. #definre  

是C语言中的预处理命令,用于定义宏,主要有以下用法和特点:

定义常量:

#define PI 3.1415926

这样在后续代码中使用PI就代表给定的圆周率值,若需要修改圆周率的精度,只需在定义处修改即可。

定义宏函数:

能定义类似函数的宏,它在预处理阶段进行文本替换。

# define _CRT_SECURE_NO_WARNINGS
# include 
# include
#define num 100
int main()
{
    printf("输出num:%d\n",num);
    int a = num;
    printf("输出a:%d\n",a);
    return 0;
}

定义宏:

原来可以通过函数来实现加法运算,即:

int Add(int x, int y)
{
  int  z= x + y;
   return z;
}

int main()
{
    int a = 10;
    int b = 20;
    int c = Add(a, b);
    printf("%d\n", c);
    return 0;
}

通过#define定义宏来实现:

#define Add(x,y) ((x)+(y))   //Add为宏名,x,y为宏的参数,参数是无类型的。((x)+(y))为宏体。
int main()
{
    int a = 10;
    int b = 20;
    int c = Add(a, b);
    printf("%d\n", c);
    return 0;
}

你可能感兴趣的:(c语言,数据结构,开发语言)