初识C语言:关键字

1. 常见的关键字

auto    break    case    char    const    continue    default    do    double    else    enum   
extern    float    for    goto    if    int    long    register    return    short    signed  
sizeof    static    struct    switch    typedef    union    unsigned    void    volatile    
while

2. 分类

(1)循环语句:

        for,do...while,while,continue(只能用在循环,不可以用在switch),break

(2)选择语句:

        if...else,swtich...case...default(+使用break),goto

(3)数据类型:

        short,int,char,long,float,double,signed(有符号),unsigned(无符号),enume,struct,union,void

(4)const:常属性(修饰变量)

(5)define:定义常量、宏

  • 定义常量

#include<stdio.h>
#define NUM 100
int main()
{
    printf("%d\n",NUM);    //===> 100
    int a = NUM;
    printf("%d\n",a);    //===> 100
    return 0;
}
  • 定义宏

// 格式:
 #define 宏名(宏的参数) 宏的内容
# define ADD(x+y) ((x)+(y))

(6)auto: 自动

        所有局部变量前都有 auto,只是被隐藏了

#include<stdio.h>
int main()
{
    auto int a = 10;//自动变量,即进主函数自动创建 a,执行到return 0后出主函数自动销毁 a
    return 0;
}

(7)extern:声明外部符号

(8)typedef:类型重命名(将类型名称进行重命名)

#include<stdio.h>
typedf unsigned int uint;//对 unsigned 进行重新命名,命名为uint
int main()
{
    unsigned int num1 = 0; //无符号型
    uint num2 = 1;//无符号型  
    return 0; 
}
  • typedef关键字 与 struct关键字的连用

(9)static:静态 (数据存放于内存的静态区)

  • static 修饰局部变量,称为静态局部变量

        静态局部变量在函数调用结束后并不会被销毁,而是会保留其值,直到下次函数调用时继续使用。这意味着静态局部变量的生命周期是整个程序的执行时间,而不仅仅是它所在的函数。静态局部变量在程序执行到该对象的声明处时被首次初始化,之后的函数调用不再进行初始化。如果没有显式初始化,它会被程序自动初始化为0。本质上,static修饰局部变量的时候,改变了该变量的存储位置

#include<stdio.h>
void test() {
    static int a = 1;
    a++;
    printf("%d  ", a);
}
int main()
{
    int i = 0;
    while (i < 10){
    test();
    i++;}
    return 0;
}

  • static 修饰全局变量,称为静态全局变量

         全局变量本身具有 外部链接属性
        但,若 static修饰全局变量,则该全局变量的外部链接属性就会变成 內部链接属性。静态全局变量的 作用域被限制在声明它的文件内,也就是说,它只能在声明它的源文件中被访问,而不能被其他源文件访问—— 作用域变小。这有助于避免不同源文件之间的命名冲突。

  • static 修饰函数,称为静态函数

        静态函数的作用域 被限制 声明它的源文件中,不能被其他源文件中的函数调用。
        静态函数可以隐藏在其他源文件中具有相同名称的非静态函数之后,从而避免函数名冲并且突,静态函数还可以提高代码的封装性和可维护性

(10)break:停止(用于跳出循环)

(11)continue:停止(但不跳出循环)

(12)enum:枚举

(13)struct:结构体

(14)union:联合体(共用体)

(15)goto:实现跳转(与选择条件语句相似)

(16)return:返回

(17)sizeof:计算所占内存大小(字节)

(18)void: 空类型,无(函数的返回类型,函数的参数)

#include<stdio.h>
void test()
{
    printf("hello world\n");//无类型,无返回值,return
}
int main()
{
    return 0;//有返回值
}

(19)register:寄存器

#include<stdio.h>
int main()
{
    register int num = 3;    //建议:把 3 存放到寄存器中,决定权仍然在编译器中
    return 0;
}

<think>好的,我现在要处理用户关于C语言常见关键字的问题。用户希望得到一个关键字列表及其用途,并且需要按照系统级指令的格式来回答。首先,我需要回忆一下C语言关键字有哪些,以及它们的分类和用途。 根据引用的资料,特别是引用[3],C语言关键字分为数据类型关键字、语句定义符、预处理命令字等。数据类型关键字有12个,比如int、char、float等。语句定义符包括if、else、for、while、do等控制流语句。预处理命令字如#include和#define,不过这些可能属于预处理指令,不是严格的关键字,但需要确认。 接下来,我需要确保每个关键字的用途描述准确。例如,auto关键字用于声明自动存储期的变量,通常默认情况下就是auto,所以可能不常用。static则用于静态变量,既可以保持局部变量的值,也可以限制全局变量的作用域。 还要注意用户提供的引用内容,比如引用[4]提到while是循环控制语句,只要表达式为真就一直循环。而引用[3]将关键字分为数据类型、语句定义符等,这可能帮助分类。 我需要检查是否有遗漏的关键字,比如C89、C99标准中的新增关键字,如restrict、_Bool、_Complex等,但用户可能只需要常见的关键字,所以可能主要列出传统的32个关键字。 然后按照分类组织列表,比如数据类型、存储类别、流程控制、其他功能等,这样结构清晰。同时,每个关键字后给出简要的用途,可能需要参考引用中的例子,比如引用[1]和[2]提到关键字的作用和正确使用的重要性。 确保所有行内数学表达式用$...$格式,但这里可能用不上数学表达式。独立公式也不需要,所以可能不需要使用$$...$$。另外,生成相关问题需要考虑用户可能感兴趣的扩展内容,比如关键字的实际应用、常见错误、与C++的区别等。 最后,引用标识要正确添加,确保每个引用来源对应正确的注释。例如,关于存储类别的说明可能引用[2],而分类部分引用[3]。 现在,整理所有信息,确保符合用户要求的格式,结构清晰,并且信息准确可靠。检查是否有重复或错误的关键字,例如是否将const归类正确,或者volatile的位置是否正确。同时,注意使用中文回答,保持语言自然流畅。</think>### C语言常见关键字分类及用途列表 #### 一、数据类型关键字(12个) 1. **`char`**:声明字符型变量,例如:`char c = 'A';` [^3] 2. **`int`**:声明整型变量,例如:`int num = 10;` 3. **`float`**:声明单精度浮点型变量,例如:`float f = 3.14;` 4. **`double`**:声明双精度浮点型变量,例如:`double d = 3.1415926;` 5. **`short`**:声明短整型变量,例如:`short s = 100;` 6. **`long`**:声明长整型或扩展精度的浮点型变量,例如:`long l = 100000L;` 7. **`signed`**:声明有符号类型变量,例如:`signed int si = -5;` 8. **`unsigned`**:声明无符号类型变量,例如:`unsigned int ui = 5;` 9. **`void`**:表示无类型,用于函数返回值或指针声明,例如:`void* ptr;` 10. **`enum`**:定义枚举类型,例如:`enum Color { RED, GREEN, BLUE };` 11. **`struct`**:定义结构体类型,例如:`struct Point { int x; int y; };` 12. **`union`**:定义联合体类型,例如:`union Data { int i; float f; };` #### 二、存储类别关键字(4个) 1. **`auto`**:声明自动变量(默认存储类别,通常省略),例如:`auto int a = 0;` [^3] 2. **`static`**:声明静态变量,例如:`static int count = 0;`(局部变量持久化或全局变量作用域限制)[^2] 3. **`register`**:建议编译器将变量存储在寄存器中,例如:`register int i;` 4. **`extern`**:声明外部变量或函数,例如:`extern int global_var;` [^2] #### 三、流程控制关键字(12个) 1. **`if`/`else`**:条件分支控制,例如:`if (x > 0) { ... } else { ... }` 2. **`switch`/`case`/`default`**:多分支选择控制,例如: ```c switch (n) { case 1: ... break; default: ... } ``` 3. **`for`**:循环控制,例如:`for (int i=0; i<10; i++) { ... }` 4. **`while`**:当型循环,例如:`while (x < 100) { ... }` [^4] 5. **`do`**:直到型循环,例如:`do { ... } while (x < 100);` 6. **`break`**:跳出循环或`switch`语句 7. **`continue`**:跳过当前循环剩余代码,进入下一轮循环 8. **`return`**:从函数返回值,例如:`return 0;` 9. **`goto`**:无条件跳转到标签位置,例如:`goto error;` #### 四、其他功能关键字(4个) 1. **`const`**:声明只读变量,例如:`const int MAX = 100;` 2. **`volatile`**:禁止编译器优化,确保变量直接访问内存,例如:`volatile int sensor_data;` 3. **`typedef`**:为数据类型定义别名,例如:`typedef int Integer;` 4. **`sizeof`**:计算数据类型或变量占用的内存大小,例如:`sizeof(int)` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值