1、相关代码理解

在看代码时,发现有用到  SOCKET

我去找它们的定义,发现有如下定义:

typedef   UINT_PTR  SOCKET

又去看UINT_PTR,LONG_PTR, LONG_PTR的定义,发现有如下定义:

1     typedef _W64 int INT_PTR, *PINT_PTR;
2 typedef _W64 unsigned int UINT_PTR, *PUINT_PTR;
3
4 typedef _W64 long LONG_PTR, *PLONG_PTR;
5 typedef _W64 unsigned long ULONG_PTR, *PULONG_PTR;

以typedef _W64 int INT_PTR, *PINT_PTR;为例,这里

_W64是编译选项,在64位编译器下, ,而且打开了/Wp64编译选项时,编译器会对使用了__w64的类型进行32位到64位移植性的判断
typedef int INT_PTR => 这里就是为int类型取了一个别名 INT_PTR, 所以这里 INT_PTR就是代表int =》使用 INT_PTR b; b =1;
typedef int *PINT_PTR => 就是为int *,也就是int类型的指针,取了一个别名 PINT_PTR, 所以,这里PINT_PTR就是代表int类型的指针 => 使用 int x = 8; PINT_PTR y = &x;

2、知识扩充

(1)intptr_t 和uintptr_t 类型用来存放指针地址。它们提供了一种可移植且安全的方法声明指针,而且和系统中使用的指针长度相同,对于把指针转化成整数形式来说很有用。

(2)intptr_t是为了跨平台,其长度总是所在平台的位数,所以用来存放地址。

(3)64位机器上指针占8字节,long类型也占8字节,32位机器上指针占用4字节,int类型也占用4字节,所以intptr_t、uintptr_t才这样取别名就是为了能让整数类型与指针互相转换,且注意到为了兼容16位机器,在非64位机器的intptr_t、uintptr_t用int来取别名,而不是long。

3、typedef用法

  • C语言中可以对类型赋新名字

  • 语法:
1 typedef Type NewTypeName
2
3 - typedef 并没有创建新类型,只是创建了类型别名
  • 定一个0~255数字的数据类型

 1 #include <stdio.h>
2 #include<stdlib.h>
3
4 typedef unsigned char byte;
5
6 int main()
7 {
8 byte b = 128;
9 printf("sizeof(byte) = %d\n", sizeof(byte));
10 printf("b = %d\n",b);
11
12 return 0;
13 }
  • typedef应用

  • typedef 可在函数中定义“局部类型名”
  • typedef 常用于简化类型名(如 unsigned long long)
  • typedef 定义类型名,能够以统一的方式创建变量(Type var)

Unit_ptr数据类型的理解的更多相关文章

  1. JS数据类型的理解(猜测)

    Js 数据类型 对于这个主题,首先来看几个问题,如果你对这几个问题很清楚的话,那就请直接跳过吧,不用接着往下看了,如果不清楚,建议你还是看看. 1)如果判断函数?function 和object的联系 ...

  2. C语言数据类型的理解

    数据类型的定义: 作为一种语言,必然有所谓的语言组成要素,就像日常生活中人们之间的交流一样,首先会有字,字再成词组,再来就是句子,后来呢就是段落等等.当然不同的字,词,句这些在一起,就会有不同的表达效 ...

  3. 我对js数据类型的理解和深浅(copy)的应用场景

    本人毕业一所专科院校,所学专业是计算机应用技术,在大学时对前端有了一定的了解之后,觉得自己对前端的兴趣十分强烈,开始自学前端,一路上也是坎坎坷坷,也有想要放弃的时候,还好坚持了下来,并且从事前端开发已 ...

  4. 关于int8_t,uint8_t.....等数据类型的理解

    实习中,今天在看公司源码的时候,发现前辈给的代码都是这样的 typedef int8_t int8; typedef uint8_t uint8; typedef int16_t int16; typ ...

  5. javascript: 数据类型深入理解

    1.基本类型(值类型或者原始类型): Number.Boolean.String.NULL.Undefined以及ES6的Symbol2.引用类型:Object.Array.Function.Date ...

  6. Python3 中bytes数据类型深入理解(ASCII码对照表)

    bytes的来源 bytes 是 Python 3.x 新增的类型,在 Python 2.x 中是不存在的. bytes 的意思是"字节",以字节为单位存储数据.而一个字节二进制为 ...

  7. 课程1——数据类型和变量

    声明:本系列随笔主要用于记录c语言的常备知识点,不能保证所有知识正确性,欢迎大家阅读.学习.批评.指正!!你们的鼓励是我前进的动力.严禁用于私人目的.转载请注明出处:http://www.cnblog ...

  8. 如何理解signal函数声明

    Signal函数用起来其实很简单,但是回头看看他的声明,相信会有很多人表示费解.自己也在这个问题中纠结了好几年了,今天终于弄明白,很是兴奋,一起分享一下. 先看函数原型:void (*signal(i ...

  9. Pyhton编程(五)之基本数据类型-列表、元组、字典

    一:列表(list) 列表是由一系列按特定顺序排列的元素组成,可以创建包含字母表中的所有字母.数字.或中文的列表,也可以将任何东西加入列表中,其中的元素之间可以没有任何关系. 在Python中,用方括 ...

  10. js基础--javaScript数据类型你都弄明白了吗?绝对干货

    欢迎访问我的个人博客:http://www.xiaolongwu.cn 数据类型的分类 JavaScript的数据类型分为两大类,基本数据类型和复杂数据类型. 基本数据类型:Null.Undefine ...

随机推荐

  1. CodeForces CF1846G 题解

    CodeForces CF1846G 题解 CodeForces题目链接 洛谷题目链接 标准答案是状压之后,转化成Dijkstra算法跑最短路.我这里提供一个不一样的思路. 题意简述 主人公得了病,有 ...

  2. ceph分布式存储软件pgs inconsistent

    Ceph是一个开源的分布式存储系统,它提供了高性能.高可靠性以及高扩展性.Ceph的设计理念是基于对象存储模型,通过将数据分割成多个对象并存储在不同的节点上,实现数据的分布式存储和访问. Ceph的核 ...

  3. Spark RDD惰性计算的自主优化

    原创/朱季谦 RDD(弹性分布式数据集)中的数据就如final定义一般,只可读而无法修改,若要对RDD进行转换或操作,那就需要创建一个新的RDD来保存结果.故而就需要用到转换和行动的算子. Spark ...

  4. DeferredResult异步处理spring mvc Demo

    一.概述 spring mvc同步接口在请求处理过程中一直处于阻塞状态,而异步接口可以启用后台线程去处理耗时任务.简单来说适用场景: 1.高并发: 2.高IO耗时操作. 二.Demo Spring M ...

  5. Google Hacking语法总结

    Google Hacking语法总结 Google Hacking是利用谷歌搜索的强大,来在浩瀚的互联网中搜索到我们需要的信息.轻量级的搜索可以搜素出一些遗留后门,不想被发现的后台入口,中量级的搜索出 ...

  6. Htttpclien循环自动生成图片,同时发送参数和文件,模拟http的post请求

    package org.jeecg.modules.bussiness.PostTests; import com.sun.tools.internal.xjc.reader.xmlschema.bi ...

  7. 2017-D

    2017-D 数据库部分 使用Windows 身份验证登录SQL Server ,建立数据库test0322,文件日志保存到一个专门的文件夹 建表 备份数据库,选定所创建数据库,右键-任务-备份-选择 ...

  8. 关于oop的一点回忆

    昨天在一个程序员行业群里看到别人发了一条消息, 大意是:要做好封装啦,不要随便用public啦,不要随便改别人代码啦. 说的好像就是我,因为,我这辈子最后悔的一件事情之一就是手贱改动别人代码. 那大概 ...

  9. 记一次 .NET 某仪器测量系统 CPU爆高分析

    一:背景 1. 讲故事 最近也挺奇怪,看到了两起 CPU 爆高的案例,且诱因也是一致的,觉得有一些代表性,合并分享出来帮助大家来避坑吧,闲话不多说,直接上 windbg 分析. 二:WinDbg 分析 ...

  10. MySQL系列3:缓冲池Buffer Pool的设计思想

    1. 回顾 上一篇我们主要讲了InnoDB的存储引擎,其中主要的一个组件就是缓存池Buffer Pool,缓存了磁盘的真实数据,然后基于缓存做增删改查操作,同时配合了后续的redo log.刷磁盘等机 ...