再论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\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的更多相关文章
- 再谈typedef(重点为函数指针)
有种很方便的写法. typedef int *p: p pointer: 这时直接把pointer带入原式中,取代p然后去掉typedef,得到的结果就是int * pointer: 哈哈,这样直接替 ...
- [转载] C++ typedef 用法详解
typedef的语法描述 在现实生活中,信息的概念可能是长度,数量和面积等.在C语言中,信息被抽象为int.float和 double等基本数据类型.从基本数据类型名称上,不能够看出其所代表的物理属性 ...
- typedef 类型重命名 和 #define 宏定义(1)
http://www.blogjava.net/jasmine214--love/archive/2010/11/29/339307.html 在现实生活中,信息的概念可能是长度,数量和面积等.在C语 ...
- Android Studio下使用NDK的流程
我要重新拿回持之以恒徽章!! 老规矩,先说看能学会什么:ANDROID STUDIO下NDK的使用方法.JNI的基本使用方法,C语言调用JAVA的方法. 首先要下载NDK,如果你没有VPN可以来htt ...
- 深入C(关键字)
C语言标准定义的32个关键字 关键字 意 义 auto 声明自动变量,缺省时编译器一般默认为auto int 声明整型变量 double 声明双精度变量 long 声明长整型变量 char 声明字符型 ...
- C语言之函数指针、回调函数的使用
一.背景 首先看下如下代码,这个定义是放在头文件的,在程序中tCdrvCallbackFkt也定义了另一个变量,而且括号后面还跟定义了几个变量,不理解这个定义. typedef void (PUBLI ...
- C++中对C的扩展学习新增语法——引用
引用 引用的好处: 1.引用的好处 C++使用结构体,不需要再使用 typedef. 2.值传递是将实参进行拷贝,赋值给形参,如果对象比较大,每次拷贝效率比较低,并且函数内部无法修改外部变量的值,能力 ...
- 第2章:C++泛型机制的基石:数据类型表——《C++泛型:STL原理和应用》读书笔记整理
第二章:C++泛型机制的基石--数据类型表 2.1 类模板的公有数据类型成员 2.1.1 类的数据类型成员 C++类中不仅可以定义数据成员和函数成员,而且还可以定义数据类型成员.在泛型设计中,类的 ...
- 双向链表都不懂,还说懂Redis?
目录 redis源码分析系列文章 前言 API使用 lpush左侧插入数据 rpush右侧插入数据 删除某个数据 修改某个数据 具体逻辑图 双向链表的定义 节点ListNode 整体架构 双向链表的实 ...
随机推荐
- phpexcel导出带生成图片完美案例
// 导出exl public function look_down(){ $id = I('get.id'); $m = M ('offer_goods'); $where['offer_id'] ...
- $微信小程序开发实践点滴——接入Bmob后端云
Bmob后端云官网:http://www.bmob.cn/ 微信公众平台官网:https://mp.weixin.qq.com/ 微信小程序官方开发文档:https://mp.weixin.qq.co ...
- xshell如何同时打开多个标签
查看标签>>>>>回话选项卡>>>>>> 打钩即可
- websocket redis实现集群即时消息聊天
websocket与redismq实现集群消息聊天 1.application.properties server.port=8081 #thymeleaf配置 #是否启用模板缓存. spring.t ...
- MySQL-5.7创建及查看数据库
1.创建数据库语句 create database语句是在MySQL实例上创建一个指定名称的数据库. create schema语句的语义和create database是一样的. 2.语法解析 CR ...
- Saltstack 命令参数整理
命令:salt-key # 测试 命令:salt-key -A # 管理所有minion 命令:salt-key -a # 管理定义minion 命令:salt-key -d ID名字 # 删除单个m ...
- tesseract 3.05 release 编译
tesseract 3.05 release版本的对应配置好的vs2015工程.偷懒必备,毕竟依赖那么多库,环境配置还是要费点事的.https://github.com/peirick/VS2015_ ...
- 20145120黄玄曦《网络对抗》Web安全基础实践
20145120黄玄曦<网络对抗>Web安全基础实践 回答问题 (1)SQL注入攻击原理,如何防御 SQL注入原理简单地说大概是,通过构造特殊的SQL命令提交表单,让服务器执行构造的恶意S ...
- oracle时间的获取,前一天,上一个星期,上一个月
–前一天的开始时刻 SELECT to_date(to_char(TRUNC(SYSDATE-1),’yyyy-mm-dd’) || ‘00:00:00’,’yyyy-mm-dd hh24:mi:ss ...
- 《Maven实战》第6章 仓库
6.1什么是Maven仓库? Maven仓库:存储所有Maven项目共享的构件的统一位置. Maven仓库的作用:Maven项目仅需声明依赖坐标,即可在需要的时候自动根据坐标找到仓库中的构件. 6.2 ...