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\n",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 = , b = , c = ;
PINT p1 = &a; const PINT p2 = &a;
CPINT p3 = &c; printf("*p1 = %d\n",*p1);
printf("*p2 = %d\n",*p2); *p2 = ;
printf("*p2 = %d\n",*p2); //*p3 = 88; //此语句出错,
p3 = &b;
printf("*p3 = %d\n",*p3); // PINT p2 = &b; //此语句出错
// printf("*p2 = %d\n",*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;
*/

再论typedef的更多相关文章

  1. 再谈typedef(重点为函数指针)

    有种很方便的写法. typedef int *p: p pointer: 这时直接把pointer带入原式中,取代p然后去掉typedef,得到的结果就是int * pointer: 哈哈,这样直接替 ...

  2. [转载] C++ typedef 用法详解

    typedef的语法描述 在现实生活中,信息的概念可能是长度,数量和面积等.在C语言中,信息被抽象为int.float和 double等基本数据类型.从基本数据类型名称上,不能够看出其所代表的物理属性 ...

  3. typedef 类型重命名 和 #define 宏定义(1)

    http://www.blogjava.net/jasmine214--love/archive/2010/11/29/339307.html 在现实生活中,信息的概念可能是长度,数量和面积等.在C语 ...

  4. Android Studio下使用NDK的流程

    我要重新拿回持之以恒徽章!! 老规矩,先说看能学会什么:ANDROID STUDIO下NDK的使用方法.JNI的基本使用方法,C语言调用JAVA的方法. 首先要下载NDK,如果你没有VPN可以来htt ...

  5. 深入C(关键字)

    C语言标准定义的32个关键字 关键字 意 义 auto 声明自动变量,缺省时编译器一般默认为auto int 声明整型变量 double 声明双精度变量 long 声明长整型变量 char 声明字符型 ...

  6. C语言之函数指针、回调函数的使用

    一.背景 首先看下如下代码,这个定义是放在头文件的,在程序中tCdrvCallbackFkt也定义了另一个变量,而且括号后面还跟定义了几个变量,不理解这个定义. typedef void (PUBLI ...

  7. C++中对C的扩展学习新增语法——引用

    引用 引用的好处: 1.引用的好处 C++使用结构体,不需要再使用 typedef. 2.值传递是将实参进行拷贝,赋值给形参,如果对象比较大,每次拷贝效率比较低,并且函数内部无法修改外部变量的值,能力 ...

  8. 第2章:C++泛型机制的基石:数据类型表——《C++泛型:STL原理和应用》读书笔记整理

    第二章:C++泛型机制的基石--数据类型表 2.1 类模板的公有数据类型成员 2.1.1 类的数据类型成员   C++类中不仅可以定义数据成员和函数成员,而且还可以定义数据类型成员.在泛型设计中,类的 ...

  9. 双向链表都不懂,还说懂Redis?

    目录 redis源码分析系列文章 前言 API使用 lpush左侧插入数据 rpush右侧插入数据 删除某个数据 修改某个数据 具体逻辑图 双向链表的定义 节点ListNode 整体架构 双向链表的实 ...

随机推荐

  1. tomcat 日志目录 介绍

    [root@mysql tomcat]# ll 总用量 drwxr-x---. root root 11月 : bin -rw-r-----. root root 11月 : BUILDING.txt ...

  2. exp导出一个表中符合查询条件的数据

    原文地址:exp导出一个表中符合查询条件的数据 作者:charsi 导出一个表中的部分数据,使用QUERY参数,如下导出select * from test where object_id>50 ...

  3. Java并发—同步容器和并发容器

    简述同步容器与并发容器 在Java并发编程中,经常听到同步容器.并发容器之说,那什么是同步容器与并发容器呢?同步容器可以简单地理解为通过synchronized来实现同步的容器,比如Vector.Ha ...

  4. sqlserver导入excel的电话号码(身份证)变为科学计数解决方式

    如果excel中有一列存的是手机号码或者身份证号码,那么导入到sql中时,会把手机或者身份证当作数字格式对待,因而会以科学记数法的形式存在sqlserver表中,解决方式,先将excel文件另存为文本 ...

  5. r.js的build.js的详细配置解析

    { baseUrl: "../src",//当前文件的父目录的兄弟src目录,意思是这个目录会被完全复制到dir目录下面 mainConfigFile: '../src/init- ...

  6. day1 python调用模块,密码加密

    import getpass #加密密码 username = input("username:") password = getpass.getpass("passwo ...

  7. hadoop23---自定义rpc架构(duboo的原理)

  8. sql统计上周销售量的起止时间

    开始日期: >select DATEADD(Day, 1 - DATEPART(Weekday,CONVERT(varchar(10), GETDATE() - 7, 120)), CONVER ...

  9. GIT使用—创建一个版本库

    一.GIT命令行 [root@localhost ~]# git usage: git [--version] [--exec-path[=GIT_EXEC_PATH]] [--html-path] ...

  10. Python数据处理实例

    使用python进行数据处理的实例(数据为某公司HR部门关于员工信息的部分摘录,kaggle上面的一次赛题) https://www.kaggle.com/c/kfru-dbm-hr-analytic ...