- C语言综述1
- C语言字符集2
- C语言词法元素3
- C语言表达式4
- C语言语句5
- C语言声明6
- C语言预处理指令7
- C语言头文件8
文章目录
- 系列文章目录
- 前言
- 1、声明
- 2、声明区分符
- 2.1、存储类区分符
- 2.2、类型区分符
- 2.3、类型限定词
- 3、声明符
- 3.1、括号声明符
- 3.2、指针声明符
- 3.3、数组声明符
- 3.4、函数声明符
- 4、初始化(Initialization)
前言
蓝色问号代表个人理解 绿色代表来源 红色问号代表尚有疑问
为什么要读标准?因为全面、权威,所有答案都在标准里面!
哪些人适合浏览本系列文章?不清楚C语言程序的组成,以及每个组成部分的详细内容
持续更新,码字不易,求点赞收藏
1、声明
约束
在相同的范围和名称空间,如果某个标识符没有链接,则该标识符的声明不得超过一个,即不能重复声明
- typedef,将标识符定义为自定义类型名,typedef声明不会引入新类型
- extern,外部链接
- static,内部链接
- auto,默认值
- register,暗示该对象的访问可能快,这种暗示的有效程度由实现定义
类型区分符可以以任何顺序出现,可与其他声明区分符混合在一起
约束
只能是以下集合之一
- void
- char,signed char,unsigned char
- short, signed short, short int, signed short int
- unsigned short, unsigned short int
- int, signed, signed int, 没有类型区分符
- unsigned,unsigned int
- long,signed long,long int,signed long int
- unsigned long,unsigned long int
- float,double,long double
- 结构、 联合、枚举区分符
- 自定义类型名
- const
- volatile,在使用编译器优化的情况下使用
无论直接出现或通过一个或多个typedef出现,同一类型限定词不能在同一区分符表或限定词表中出现多次。
- 如果试图通过使用非限定类型来修改限定类型的对象,则行为未定义
- 如果试图通过使用非易失类型来易失类型的对象,则该行为是未定义的
- 如果数组类型包含任何类型限定符,则是对元素的限定
- 如果函数类型包含任何类型限定符,则行为未定义
- 如果两个限定类型相容,则两者都应为相容类型完全相同的限定形式
每个声明符声明一个标识符,并表明当某个表达式中出现与声明符形式相同的 *** 作数时,则该 *** 作数指示一个函数或对象,它们将使用声明区分符指示的作用域、存储期和类型,初值声明符即带初始化的声明符
3.1、括号声明符#include3.2、指针声明符using namespace std; int main() { int *(a[4]); //我也不知道这是啥 *a[4] = 5; cout << *a[4]; return 0; }
#include3.3、数组声明符using namespace std; int main() { int b = 100; const int * c = &b; //const int 型的指针,c的值是可以修改的 int *const a = &b; //int 型的 const的指针,a 的值不可以修改 return 0; }
#include3.4、函数声明符using namespace std; int main() { int a[4]; return 0; }
约束
参数声明中能出现的唯一存储类区分符是register
#include4、初始化(Initialization)using namespace std; int test(int a, int b); int test1(int, int); int main() { return 0; }
-
赋值表达式
-
{初值符表}
-
{初值符表,}
-
初值符表即一个或多个初值符
-
初值符不得多于要初始化的对象
-
初始化的实体类型应为对象类型或未知大小的数组。
-
静态存储期对象、聚集、联合类型对象的表达式应为常量表达式
-
若某声明有块作用域且具有内部或外部链接,则该声明不应有初始化
以上纯属个人观点,欢迎大佬批评指正
https://blog.csdn.net/init33/article/details/121258745 ↩︎
https://blog.csdn.net/init33/article/details/121318734 ↩︎
https://blog.csdn.net/init33/article/details/121319873 ↩︎
https://blog.csdn.net/init33/article/details/121323883 ↩︎
https://blog.csdn.net/init33/article/details/121323943 ↩︎
https://blog.csdn.net/init33/article/details/121323932 ↩︎
https://blog.csdn.net/init33/article/details/121323958 ↩︎
https://editor.csdn.net/md/?articleId=121323994 ↩︎
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)