1. 什么是缺省存储类别
在C语言中,变量的存储类别指的是变量在内存中如何存储,在程序运行时如何使用变量。C语言中共有五种存储类别,分别是自动存储类别、寄存器存储类别、静态存储类别、外部存储类别和缺省存储类别。缺省存储类别是指如果在声明变量时没有显式地指定存储类别,则该变量的存储类别将根据具体情况来确定。
需要注意的是,C语言标准规定,如果在声明函数时没有显式地指定形参的存储类别,则该形参的存储类别将默认为auto。
2. auto存储类别
auto存储类别是C语言中的一种很常见的存储类别,它用来修饰局部变量,也就是函数内部声明的变量。如果在函数内部声明变量时没有显式地指定存储类别,编译器会自动将该变量的存储类别设置为auto。
例如:
void example() {
auto int a = 100;
printf("%d\n", a);
}
在这个例子中,变量a的存储类别会被自动设置为auto。
3. 形参的缺省存储类别是什么
在C语言中,函数的形参也是一种局部变量。如果在声明函数时没有显式地指定形参的存储类别,则该形参的存储类别默认为auto。
例如:
void example(int a) {
printf("%d\n", a);
}
在这个例子中,函数example的形参a的存储类别会被自动设置为auto。
4. auto存储类别与缺省存储类别的区别
虽然缺省存储类别默认为auto,但是auto存储类别与缺省存储类别是有区别的。
缺省存储类别是在函数声明时根据具体情况自动决定的,如果函数声明中没有显式指定形参的存储类别,编译器会根据具体情况自动判断,可能是auto存储类别,也可能是其他存储类别。而auto存储类别仅仅用来修饰局部变量,包括函数内部声明的变量和形参。
另外,需要注意的是,虽然auto存储类别在C语言中很常见,但是在C++中,auto关键字的含义发生了改变,已经不再表示存储类别,而是用来推断变量的类型。
5. 总结
在C语言中,变量的存储类别是非常重要的概念,对于程序的正确性和效率都有很大的影响。形参的缺省存储类别是auto存储类别,如果在声明函数时没有显式地指定形参的存储类别,则该形参的存储类别将默认为auto。需要注意的是,auto存储类别仅仅用来修饰局部变量,缺省存储类别在函数声明时会根据具体情况自动判断,并不一定是auto存储类别。