C语言day09-14结构体-类型作用域

pragma mark 结构体-类型作用域

pragma mark 概念

pragma mark 代码

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

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

int num;
int main()
{
    num = 10;
    struct Person p1;
    return 0;
}
void text()
{
    num  = 20;
    struct Person p2;
}

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

void text()
{
    // 1. 如果结构体定义再函数 或 代码块中, 那么结构体类型的作用域和变量的作用域一样, 从定义的那一行开始,一只到函数结束或者代码块结束
    
//    struct Person sp;

}
*/

    原文作者:liyuhong165
    原文地址: https://www.jianshu.com/p/7606906399c7
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞