typedef笔记

刚学typedef,当typedef后的类型别名用在其他变量声明中时,可能会对其使用有点迷惑

 1 int main(int argc, char *argv[])
 2 {
 3     int x = 3;
 4     typedef int * p;
 5     p const cp = &x;  //  const p cp = &x;    这2者写法效果一样。
 6     ++cp;        //报错
 7     *cp = 4;
 8     cout << x;
 9     return 0;
10 }

可见typedef后的类型别名,并不是展开,把它当内置类型名那样的普通类型名看待就不会错。

时间: 2024-08-11 07:36:52

typedef笔记的相关文章

【学习笔记】【C语言】typedef

1.概念 我们可以使用typedef关键字为各种数据类型定义一个新名字(别名). 2.作用:给已经存在的类型起一个新的名称 3.使用场合: 1> 基本数据类型 2> 指针 3> 结构体 4> 枚举 5> 指向函数的指针 4.代码 1 #include <stdio.h> 2 3 typedef int MyInt; 4 typedef MyInt MyInt2; 5 6 // 给指针类型char *起一个新的类型名称String 7 typedef char *

iOS学习笔记之typedef

typedef unsigned long long weiboId; typedef 定义一个使用方便的类型,谓之为“宏定义“. unsigned long long 是一种无符号的长长整型.本应该是这样,unsigned long long int ,这里省略了int ,编译器会自动认可. unsigned long long ,是64 位的数据,8 个字节,无符号,取值范围从0 到2 的64 次方-1 . unsigned long ,是32 位的数据,4 个字节,无符号,取值范围从0 到

C语言笔记之typedef

typedef 这个关键字用于给一个类型起个新的名字,和define不同, typedef 给出的符号名称仅限于对类型 , 而不是对值.下面是一个例子: typedef short wchar; typedef将short类型定义成wchar类型,那么以后遇到 wchar a; 其实就是 short a;  如果没有typedef这个关键字,wchar就是一个变量名,加上typedef,wchar就成了类型名.类型名也遵循标识符的命名规则,并且通常加个 _t 后缀,表示Type. 这样做有什么用

C++学习笔记与思考 --const限定符及其引用,typedef符号

1. 定义const对象 因为常量在定义后就不能被修改,所以在定义时必须进行初始化. const int bufSize=512; const int i; // error; i is uninitialized const 2. const 对象默认为文件中的局部变量 我们知道,如果我们在一个文件中定义了一个非const变量,如果我们想在另一个文件中使用这个变量,只需要在使用前添加extern 声明即可. file1.cpp int counter; // file2.cpp extern

Directx11学习笔记【十】 画一个简单的三角形

本篇笔记要实现的是在屏幕上渲染出一个三角形,重点要学习的是渲染一个几何体的流程方式. 为了渲染几何图形,需要一个顶点缓存和一个描述顶点布局的输入层,还有着色器(主要是顶点着色器和像素着色器),下面来看看具体Demo的实现. 新建一个Win32项目 ,新建一个类我们叫做TriangleDemo,继承自前面教程我们实现的基类Dx11DemoBase. TriangleDemo.h头文件 #pragma once #include "Dx11DemoBase.h" class Triangl

【读书笔记】《Linux内核设计与实现》内核同步介绍&内核同步方法

简要做个笔记,以备忘. 需同步的原因是,我们并发访问了共享资源.我们将访问或操作共享资源的代码段称"临界区",如果两个执行线程处于同一临界区中同时执行,称"竞争条件".这里术语执行线程指任何正在执行的代码实例,如一个在内核执行的进程.一个中断处理程序或一个内核线程. 举个简单例子,i++操作.该操作可以转换为下面的机器指令序列: 1.得到当前变量i的值,并保存到一个寄存器. 2.将寄存器的值加1. 3.将i的新值写回到内存中. 当两个线程同时进入这个临界区,若i初值

sqlite学习笔记8:C语言中使用sqlite之创建表

前面已经说了如何打开和关闭数据库,这次要说得是如何执行SQL语句,来创建一张表. 要用的的函数: sqlite3_exec(sqlite3* db, const char *sql, sqlite_callback callback, void *data, char **errmsg) 参数: db:已经打开的数据库实例 sql:SQL语句,是一个字符串 callback:是一个回调函数 data:做为回调函数的第一个参数 errmsg:用于带回错误信息 该回调函数有两种返回值类型. 1.返回

C++ Primer 学习笔记_98_特殊工具与技术 --优化内存分配

特殊工具与技术 --优化内存分配 引言: C++的内存分配是一种类型化操作:new为特定类型分配内存,并在新分配的内存中构造该类型的一个对象.new表达式自动运行合适的构造函数来初始化每个动态分配的类类型对象. new基于每个对象分配内存的事实可能会对某些类强加不可接受的运行时开销,这样的类可能需要使用用户级的类类型对象分配能够更快一些.这样的类使用的通用策略是,预先分配用于创建新对象的内存,需要时在预先分配的内存中构造每个新对象. 另外一些类希望按最小尺寸为自己的数据成员分配需要的内存.例如,

C++ Primer 学习笔记_73_面向对象编程 --再谈文本查询示例

面向对象编程 --再谈文本查询示例 引言: 扩展第10.6节的文本查询应用程序,使我们的系统可以支持更复杂的查询. 为了说明问题,将用下面的简单小说来运行查询: Alice Emma has long flowing red hair. Her Daddy says when the wind blows through her hair, it looks almost alive, like a fiery bird in flight. A beautiful fiery bird, he