c语言的关键词(三)

三、存储类型关键字(4)

1、auto:通常用于自动类型推导,允许开发者在声明变量时不必显示指定变量的类型,而是让编译器或是解释器自动推断出变量的类型,好处就是是代码更简洁。

auto a=6;    //推断a为整型
auto b=2.55 ;   //推断b为浮点型
//auto c;  这个是错误的。
auto m="good";    //推断为字符串类型

注意:auto并不是所有编程语言都有的,主要出现c++、JavaScript、TypeScript等,其它语言必须要显示指定变量。

2、extern:用于声明一个变量或函数的存在,好处就是易于管理和维护。

  • 变量:如果你有多个文件使用同一个变量,一个文件来定义它,其他文件声明它。你不必每个文件都要重新定义它。
//file1.c
extern int nums;

//file2.c
int nums=3;    //实际定义
  • 函数:extern可以用来声明函数,这样可以让函数声明分散到不同的文件,而实际上函数的定义放在一个专门的文件中。
//file1.c
extern void delayms();


//file2.c
void delayms(){
//函数的实际定义

}

注意:在使用时,必须保证变量或函数的定义为唯一存在的

            变量被声明为extern但没有定义会报错

            在c++中extern还用于指定变量的连接属性,比如extern  "c"

3、register:通常指的是处理器中的寄存器,是计算机内存单元,用于存储数据和指令。

register int s;    //寄存器变量

4、static:这个意思就是静态,在不同的编程语言中有不同的用途,好处就是可以减少内存的使用,因为静态变量只在内存中占一份空间

    //我这里就讲一下static在c/c++的作用

    c/c++:static可以用来定义变量的存储期,静态局部变量在程序执行期间持续存在,并且它们在下次函数调用时仍然保持;     static也可以定义全局变量,它们仅在定义它们的文件可见,在其他文件内函数调用时会出现“不认识”的情况;          static成员函数只能被类的对象调用。

​​# include<stdio.h>
int add(int m){
	static int b=m++;
	printf("%d\n",m);
	printf("b=%d\n",b);

}
int main(){
	
	for(int i=0;i<5;i++){
		add(i);
	}
		return 0;
	
}

因为b为静态类型(static),所以只会定义一次。static int b=m++;这个只在第一次调用执行。

四、其它关键词

1、const:用于声明一个变量,意在告诉你该常量不应被改变。

//声明一个整型常量
const int  value=18;
//声明一个字符串常量
const char *sting ="hello";
​# include<stdio.h>
int main() {

int a=10;
const int *ptr=&a;
//ptr=ptr+2;    //错误,不能修改指针本身,但可以改变它指向的地址
a=20;    //因为a不是常量所以可以改变
printf("%d",*ptr);
return 0;
}

2、sizeof:用来获取数据类型或者变量所占内存的大小     //这是一个操作符不是函数,strlen这个是函数。

# include <stdio.h>
int main() {
	int m;
	printf("%d\n",sizeof(m));    //%zu也是可以的
return 0;
}

3、typedef:用于定义新的数据类型名称

typedef int Panduam;
Panduam a,b;    // Panduam相当于int 类型的别名。

    

typedef struct{
    
    int age;
    int height;
} Person;    //Person是一个新定义的类型名称,代表一个结构体类型

Person name;

typedef enum{RED,GREEN,YELLOW} Colour;    

//Colour是一个新定义类型,代表包含三个枚举值的枚举类型

Colour color=RED;

4、volatile:用于声明变量,已告知编译器该变量的值可能在程序控制之外被改变。

volatile int num;



void set_num(){
    num=5;    
}

void check_num(){

    if(num) {
        
           //做另外的操作
    }
}

/*我写的可能比较粗糙,如果大家对于一些地方不解,可以看看其它博主写的内容。这个周末就一个字“累”,我将悼念这几天我掉的头发 ~ ~  */

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值