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的主要内容,如果未能解决你的问题,请参考以下文章

C语言的联合出错

类 C 语言中的返回类型多态性

大数据学习之Scala语言的高级特性42

C语言中的自动变量和寄存器变量是什莫?

Java语言中类Double与基本类型double间有何关系

使用ctypes实现python类型和C语言类型之间的相互转化