#define PINT int*与typedef int *SINT的区别.
#define PINT int* #define是预处理指令,简单的宏定义,在编译预处理时进行简单的替换,不作正确性检查,不管含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。
①#define PINT int*是,在预处理阶段就已经将PINT替换为int*了,它与int *不等价
②如果有PINT a,b; //实际就是 int* a,b; a是int型指针b是int型数据
③如果有const PINT p ;//const PINT p就是 const int * p 锁的是指针p所指的对象。p可更改,但是p指向的内容不可更改。
#typedef int*SINT typedef是在编译时处理的。它在自己的作用域内给一个已经存在的类型一个别名,但是在函数定义中不能使用typedef指定符。
①这里typedef int * SINT ;和#define PINT int *的效果一样,只是前者是“起别名”,后者是“字符串替换”
②如果有SINT a,b;//实际上a, b 都为指向int的指针,只是typedef为int* 引入了一个新的助记符
③如果有const SINT p ;//SINT是一种指针类型 ,const SINT p 就是把指针给锁住了 p不可更改,但p指向的内容可更改。
总③:如果 有
const int * a;
const PINT a; <==> const int * b;
const SINT a; <==> const SINT c;
对于#define宏定义,其const修饰的就是指针指向的数值(*b),与cosnt int * a;是一样的(修饰*a)。而typedef其const修饰的是指针,因为SINT被看做是一个整体,而不是int与*两部分。所以cosnt修饰的是c,而不是*c,因为在const SINT c 这条语句中,就不存在* 这个字符。
例:
typedef int *SINT
void main()
{
int *a1,*b1,*c1;
int *a2,b2,c2;
SINT a3,b3,c3;
}
//int*中的*只修饰a2,而b2,c2只是一个int型变量,而SINT作为一个整体,其修饰的是a3,b3,c3三个变量,即三个变量类型都是SINT(即int*)。
#define PINT int*与typedef int *SINT的区别.相关推荐
- typedef int()(int,int)
typedef int()(int,int) typedef int (*f)(int,int) 和 typedef int *f(int,int) 从函数声明说起 int f(int,int);或者 ...
- typedef int(init_fnc_t) (void) 和 typedef int(*init_fnc_t) (void)函数类型和函数指针的区别
转载请注明原地址:http://blog.csdn.net/oyhb_1992/article/details/76975284 typedef int(init_fnc_t) (void)和 typ ...
- typedef int(*P)(int )
typedef int(*P)(int ) typedef 主要的作用是给变量取别名,但是存在一些比较特殊的用法.可用于通过给函数起别名的方式定义回调函数. typedef int(*P)(int ) ...
- const int *,const int * const和int const *有什么区别?
我总是搞砸了如何正确使用<code>const int* , const int * const和int const * . 是否有一组规则定义您可以做什么和不能做什么? 我想知道在分配, ...
- C语言之#define,#ifdef,typedef,extern,statis,__weak的用法,看懂stm32中的.h和.c文件
1. #define c语言中的预处理命令,用于宏定义. 示例: #define number 0xff(不用加分号) 这里就是用number代替了0xff. 2. #ifdef 条件编译,满足条件时 ...
- linux longlong大小,Linux基本数据类型大小——int,char,long int,long long int
转自: http://blog.163.com/zheng_he_xiang/blog/static/186505326201110272018548/ 在Linux操作系统下使用GCC进行编程,目前 ...
- 2020-09-21C++学习笔记之与C语言区别和加强——四种const意义(const int a; int const b; const int *c; int * const d)
2020-09-21C++学习笔记(const int a; int const b; const int *c; int * const d) 这两天在上课更新晚了. 1.C/C++中的const ...
- int * * a[10] int * (*a)[10]和 int(*a[10])() 是什么意思
int* (*a)[10]; a是一个指向包含10个int型指针元素的数组. 比如: #include <stdio.h>int main() {// 定义数组,包含10个int*int* ...
- ((sizeof(n)+sizeof(int)-1)~(sizeof(int)-1))
一.问题的提出 两年之前我写过一篇可变参数学习笔记,里面曾经简单的解释过一句: 代码 ((sizeof(n)+sizeof(int)-1)&~(sizeof(int)-1)) 的作用是在考虑字 ...
- const int、const int *、int *cosnt、const int * const、const int 的区别
2018-01-04 创建人:Ruo_Xiao 2018-10-17 修改人:Ruo_Xiao 邮箱:xclsoftware@163.com 修改内容:增加对 delete 指向常量的指针的可行性的说 ...
最新文章
- 一个黑客与电脑白痴的聊天纪录!!!
- Android小项目之---选择对话框(附源码)
- Consul入门03 - 注册服务
- 【LeetCode每周算法】两数相加
- 之前安装的python环境可以删除吗-在Mac上删除自己安装的Python方法
- 从0开始Vue2集成Bootstrap4(1)
- Kubernetes通过一行shell命令给pod中的zk节点添加权限
- Spring Boot细节挖掘(Docker部署项目)
- Native Instruments Battery 4 for mac - 尖端鼓采样器
- django数据库操作
- ACL访问控制 getfacl 、setfacl 命令
- CentOS 7 配置免密码证书登录
- sequel pro 格式化sql
- matlab发动机建模,基于MATLAB/SIMULINK的航空发动机建模与仿真研究
- 数据结构问题解决2.1——单链表存储结构定义详细解释,struct LNode* next解释,为啥next定义成指针类型
- 武汉php的工资是多少钱,在武汉工作,月薪5000元属于什么水平?
- Squid代理服务器应用及配置(图文详解)
- win10驱动开发4——加载/卸载驱动
- freessl.cn ssl申请及windows安装
- 任意四面体的外接球的半径(克列尔(A.L.Crelle)公式)