C语言编程:标识符、存储时长与动态内存管理全解析
1. 标识符的链接属性
在C语言编程中,标识符的链接属性是一个重要的概念,它决定了标识符在不同翻译单元中的可见性和使用方式。标识符的链接属性主要分为内部链接、外部链接和无链接三种。
1.1 内部链接标识符
具有内部链接的标识符不会与其他翻译单元中类似的标识符冲突。若在某个翻译单元中声明了具有内部链接的标识符,就不能再在该翻译单元中声明并使用拼写相同的外部标识符。例如:
static int c; // c 具有内部链接
1.2 无链接标识符
既没有外部链接也没有内部链接的标识符就是无链接标识符。每次声明这样的标识符都会引入一个新的实体。无链接标识符包括以下几种:
- 非变量或函数名称的标识符,如标签名、结构体标签和typedef名称。
- 函数参数。
- 在函数内部声明且没有存储类说明符extern的对象标识符。
以下是一些示例代码:
int func1( void ); // func1 具有外部链接
int a; // a 具有外部链接
extern int b = 1; // b 具有外部链接
static int c; // c 具有内部链接
static void func2( int d ) // func2 具有内部链接;d 无链接
{
extern int a; // 此 a 与上面的 a 相同,具有外部链接
int b = 2; // 此 b