zoukankan      html  css  js  c++  java
  • 再论typedef

     typedef 定义(或者叫重命名)类型而不是变量

    1、类型是一个数据模板,变量是一个实在的数据。类型是不占内存的,而变量是占内存的。

    2、面向对象的语言中:类型的类class,变量就是对象。

    #include<stdio.h>
    
    //结构体类型的定义
    // struct student
    // {
    	// char name[20];
    	// int  age;
    // };
    
    //定义一个结构体类型,这个类型有2个名
    typedef struct student
    {
    	char name[20];
    	int  age;
    } student;
    
    //第一个结构体类型 struct teacher, teacher;
    //第二个结构体指针类型struct teacher *,pTeacher;
    typedef struct teacher1
    {
    	char name[20];
    	int age;
    	int mager;
    }teacher, *pTeacher;
    
    int main(void)
    {
    	student  St1,St2;
    	teacher  Tc1,Tc2;
    	
    	pTeacher  Tc3,Tc4;
    	
    	Tc1.age = 11;
    	Tc3 = &Tc1;
    	
    	St1.age = 12;
    	printf("%d
    ",Tc3->age);
    }
    

      

    typedef 加const的用法

    #include<stdio.h>
    
    typedef int *PINT;
    typedef const int *CPINT;
    //const int *p 和 int *const p是不同的。前者是p指向的变量是const,后者是p本身const
    
    int main(void)
    {
        int a = 23, b = 55, c = 66;
        PINT p1 = &a;
        
        const PINT p2 = &a;
        CPINT p3 = &c;
        
        
        printf("*p1 = %d
    ",*p1);
        printf("*p2 = %d
    ",*p2);
        
        *p2 = 33;
        printf("*p2 = %d
    ",*p2);
        
        //*p3 = 88;        //此语句出错,
         p3 = &b;
        printf("*p3 = %d
    ",*p3);
        
        // PINT p2 = &b;   //此语句出错
        // printf("*p2 = %d
    ",*p2);
    }
    /*
       typedef int *PINT; const PINT p2;相当于int *const p2;
       typedef int *PINT; PINT const p2;相当于int *const p2;
       如果确实想得到const int *p;这种效果,只能typedef const int *CPINT;CPINT p1;
    */
  • 相关阅读:
    第五周作业_2013551605
    第四周作业_2013551605
    第三周作业
    第二周作业-2013551605-黎娜
    软件项目与过程管理第八周作业
    软件项目与过程管理第七周作业
    软件项目与过程管理第六周作业
    软件项目与过程管理第五周作业
    软件项目与过程管理第四周作业
    软件项目与过程管理第三周作业
  • 原文地址:https://www.cnblogs.com/yygsj/p/4968433.html
Copyright © 2011-2022 走看看