第09天C语言(14):结构体-类型作用域

二、代码
#include <stdio.h>
// 如果变量 写到函数或者代码块外面, 那么就不是局部变量,而是全局变量
// 全局变量的作用域 是从定义的哪一行开始, 知道文件末尾 (暂时这样理解)
int num;

// 如果将 结构体类型 写在函数或者 代码块外面, 那么结构体类型的作用域 和全局变量一样 , 从定义的那一行开始 一直到文件末尾
// 相同作用域 不能有同名的结构体类型
struct Person
{
    int age;
    char *name;
    double height;
};

int main()
{
    int num = 10;
    struct Person sp;
    
    return 0;
}

void test2()
{
    num = 20;
    struct Person sp1;
}


void demo()
{
    struct Person
    {
        int age;
        char *name;
        double height;
    };
    
    int num = 10;
    {
        struct Dog
        {
            int age;
            char *name;
        };
        struct Dog sd;
        
        // 在不同的作用域中 可以定义同名的结构体类型 , 如果使用同名的结构体类型 定义结构体变量, 采用就近原则
        struct Person
        {
            //            int age;
            char *name;
            double height;
        };
        // 在不同的作用域中 可以有同名局部变量, 如果访问采用就近原则
        int num = 50;
        printf("num =  %i\n",num);
    }
    struct Person sp = {25,"lyh",1.71};
    
    //    num = 55;
    //    struct Dog sd1;
    
    
    
    struct Person sp1;
    
}

void test()
{
    // 1.如果结构体 定义在函数或者 代码块中, 那么
//    struct Person sp;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容