c语言类型42
Posted 周三石
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言类型42相关的知识,希望对你有一定的参考价值。
// 翻译单元 1
构 S {整 a;};
外 构 S *x; // 与 TU2 的 x 兼容,但不与 TU3 的 x 兼容
// 翻译单元 2
构 S;
外 构 S *x; // 与两个 x 兼容
// 翻译单元 3
构 S {浮 a;};
外 构 S *x; // 与 TU2 的 x 兼容,但不与 TU1 的 x 兼容
// 行为未定义
// 翻译单元 1
#包含 <标io.h>
构 s {整 i;}; // 与 TU3 的 s 兼容,但不与 TU2 的 s 兼容
外 构 s x = {0}; // 与 TU3 的 x 兼容
外 空 f(空); // 与 TU2 的 f 兼容
整 主()
{
f();
中 x.i;
}
// 翻译单元 2
构 s {浮 f;}; // 与 TU4 的 s 兼容,但不与 TU1 的 s 兼容
外 构 s y = {3.14}; // 与 TU4 的 y 兼容
空 f() // 与 TU1 的 f 兼容
{
中;
}
// 翻译单元 3
构 s {整 i;}; // 与 TU1 的 s 兼容,但不与 TU2 的 s 兼容
外 构 s x; // 与 TU1 的 x 兼容
// 翻译单元 4
构 s {浮 f;}; // 与 TU2 的 s 兼容,但不与 TU1 的 s 兼容
外 构 s y; // 与 TU2 的 y 兼容
// 行为良好定义:只有对象或函数的多个声明,而非类型自身必须拥有兼容类型
// 给定一下二个文件作用域声明:
整 f(整 (*)(), 双精 (*)[3]);
整 f(整 (*)(符 *), 双精 (*)[]);
// 生成的函数合成类型为:
整 f(整 (*)(符 *), 双精 (*)[3]);
外 符 a[]; // a 的类型不完整(这通常出现于头文件)
符 a[10]; // a 的类型现在完整(这通常出现于源文件)
构 节点 {
构 节点 *下个; // 构 节点 在此点不完整
}; // 构 节点 在此点完整
整 n; // 声明 整
的大小(整); // 使用类型名
整 *a[3]; // 声明 3 个指向 整 指针的数组
的大小(整 *[3]); // 使用类型名
整 (*p)[3]; // 声明指向 3 个 整 的数组的指针
的大小(整 (*)[3]); // 使用类型名
整 (*a)[*] // (在函数参数中)声明指向 变长数组 的指针
的大小(整 (*)[*]) // (在函数参数中)使用类型名
整 *f(空); // 声明函数
的大小(整 *(空)); // 使用类型名
整 (*p)(空); // 声明指向函数指针
的大小(整 (*)(空)); // 使用类型名
整 (*常 a[])(正 整, ...) = {0}; // 声明指向函数指针的数组
的大小(整 (*常 [])(正 整, ...)); // 使用类型名
整 (n); // 声明 整 类型的 n
的大小(整 ()); // 使用类型&l双引号;返回 整 的函数&r双引号;
空* p = (空*)(构 X {整 i;} *)0;
// 用于转型表达式的 "构 X {整 i;}*"
// 引入新类型 "构 X"
构 X x = {1}; // 构 X 现在在作用域中
以上是关于c语言类型42的主要内容,如果未能解决你的问题,请参考以下文章