#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的区别.相关推荐

  1. typedef int()(int,int)

    typedef int()(int,int) typedef int (*f)(int,int) 和 typedef int *f(int,int) 从函数声明说起 int f(int,int);或者 ...

  2. 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 ...

  3. typedef int(*P)(int )

    typedef int(*P)(int ) typedef 主要的作用是给变量取别名,但是存在一些比较特殊的用法.可用于通过给函数起别名的方式定义回调函数. typedef int(*P)(int ) ...

  4. const int *,const int * const和int const *有什么区别?

    我总是搞砸了如何正确使用<code>const int* , const int * const和int const * . 是否有一组规则定义您可以做什么和不能做什么? 我想知道在分配, ...

  5. C语言之#define,#ifdef,typedef,extern,statis,__weak的用法,看懂stm32中的.h和.c文件

    1. #define c语言中的预处理命令,用于宏定义. 示例: #define number 0xff(不用加分号) 这里就是用number代替了0xff. 2. #ifdef 条件编译,满足条件时 ...

  6. linux longlong大小,Linux基本数据类型大小——int,char,long int,long long int

    转自: http://blog.163.com/zheng_he_xiang/blog/static/186505326201110272018548/ 在Linux操作系统下使用GCC进行编程,目前 ...

  7. 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 ...

  8. int * * a[10] int * (*a)[10]和 int(*a[10])() 是什么意思

    int* (*a)[10]; a是一个指向包含10个int型指针元素的数组. 比如: #include <stdio.h>int main() {// 定义数组,包含10个int*int* ...

  9. ((sizeof(n)+sizeof(int)-1)~(sizeof(int)-1))

    一.问题的提出 两年之前我写过一篇可变参数学习笔记,里面曾经简单的解释过一句: 代码 ((sizeof(n)+sizeof(int)-1)&~(sizeof(int)-1)) 的作用是在考虑字 ...

  10. 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 指向常量的指针的可行性的说 ...

最新文章

  1. 一个黑客与电脑白痴的聊天纪录!!!
  2. Android小项目之---选择对话框(附源码)
  3. Consul入门03 - 注册服务
  4. 【LeetCode每周算法】两数相加
  5. 之前安装的python环境可以删除吗-在Mac上删除自己安装的Python方法
  6. 从0开始Vue2集成Bootstrap4(1)
  7. Kubernetes通过一行shell命令给pod中的zk节点添加权限
  8. Spring Boot细节挖掘(Docker部署项目)
  9. Native Instruments Battery 4 for mac - 尖端鼓采样器
  10. django数据库操作
  11. ACL访问控制 getfacl 、setfacl 命令
  12. CentOS 7 配置免密码证书登录
  13. sequel pro 格式化sql
  14. matlab发动机建模,基于MATLAB/SIMULINK的航空发动机建模与仿真研究
  15. 数据结构问题解决2.1——单链表存储结构定义详细解释,struct LNode* next解释,为啥next定义成指针类型
  16. 武汉php的工资是多少钱,在武汉工作,月薪5000元属于什么水平?
  17. Squid代理服务器应用及配置(图文详解)
  18. win10驱动开发4——加载/卸载驱动
  19. freessl.cn ssl申请及windows安装
  20. 任意四面体的外接球的半径(克列尔(A.L.Crelle)公式)

热门文章

  1. 显示农历 php,php农历日历
  2. python基础(对应视频)----测试
  3. Facebook 把大数据做成了扑克牌,被广告人捧成了《广告圣经》
  4. python 物理专业_ewant: 用Python 学通识物理
  5. (附源码)springboot网络空间安全实验教学示范中心网站 毕业设计 111454
  6. 学习博客:BaseDAO的使用
  7. C++Primer补充(其它)
  8. 8088单板机ROM固件Boot烧写步骤(二)
  9. xxx酒业有限责任公司突发环境事件应急预案WORD
  10. 管理类联考——英语二——真题篇——按题型分类——大作文