Unit_ptr数据类型的理解
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数据类型的理解的更多相关文章
- JS数据类型的理解(猜测)
Js 数据类型 对于这个主题,首先来看几个问题,如果你对这几个问题很清楚的话,那就请直接跳过吧,不用接着往下看了,如果不清楚,建议你还是看看. 1)如果判断函数?function 和object的联系 ...
- C语言数据类型的理解
数据类型的定义: 作为一种语言,必然有所谓的语言组成要素,就像日常生活中人们之间的交流一样,首先会有字,字再成词组,再来就是句子,后来呢就是段落等等.当然不同的字,词,句这些在一起,就会有不同的表达效 ...
- 我对js数据类型的理解和深浅(copy)的应用场景
本人毕业一所专科院校,所学专业是计算机应用技术,在大学时对前端有了一定的了解之后,觉得自己对前端的兴趣十分强烈,开始自学前端,一路上也是坎坎坷坷,也有想要放弃的时候,还好坚持了下来,并且从事前端开发已 ...
- 关于int8_t,uint8_t.....等数据类型的理解
实习中,今天在看公司源码的时候,发现前辈给的代码都是这样的 typedef int8_t int8; typedef uint8_t uint8; typedef int16_t int16; typ ...
- javascript: 数据类型深入理解
1.基本类型(值类型或者原始类型): Number.Boolean.String.NULL.Undefined以及ES6的Symbol2.引用类型:Object.Array.Function.Date ...
- Python3 中bytes数据类型深入理解(ASCII码对照表)
bytes的来源 bytes 是 Python 3.x 新增的类型,在 Python 2.x 中是不存在的. bytes 的意思是"字节",以字节为单位存储数据.而一个字节二进制为 ...
- 课程1——数据类型和变量
声明:本系列随笔主要用于记录c语言的常备知识点,不能保证所有知识正确性,欢迎大家阅读.学习.批评.指正!!你们的鼓励是我前进的动力.严禁用于私人目的.转载请注明出处:http://www.cnblog ...
- 如何理解signal函数声明
Signal函数用起来其实很简单,但是回头看看他的声明,相信会有很多人表示费解.自己也在这个问题中纠结了好几年了,今天终于弄明白,很是兴奋,一起分享一下. 先看函数原型:void (*signal(i ...
- Pyhton编程(五)之基本数据类型-列表、元组、字典
一:列表(list) 列表是由一系列按特定顺序排列的元素组成,可以创建包含字母表中的所有字母.数字.或中文的列表,也可以将任何东西加入列表中,其中的元素之间可以没有任何关系. 在Python中,用方括 ...
- js基础--javaScript数据类型你都弄明白了吗?绝对干货
欢迎访问我的个人博客:http://www.xiaolongwu.cn 数据类型的分类 JavaScript的数据类型分为两大类,基本数据类型和复杂数据类型. 基本数据类型:Null.Undefine ...
随机推荐
- Winform跨线程访问UI
在开发winfrom应用时,经常遇到异常:System.InvalidOperationException:"线程间操作无效: 从不是创建控件"xxxx"的线程访问它.出 ...
- Stable Diffusion基础:ControlNet之图片风格迁移
今天继续给大家分享AI绘画中 ControlNet 的强大功能,本次的主角是 Reference,它可以将参照图片的风格迁移到新生成的图片中,这句话理解起来很困难,我们将通过几个实例来加深体会,比如照 ...
- 【译】IntelliJ IDEA 2023.2 最新变化——JetBrains IDE 中的 AI 助手
前言 本周所有基于 IntelliJ 的 IDE 和 .NET 工具的 EAP 版本都包含一个主要新功能:AI Assistant.本博文重点介绍我们基于 IntelliJ 的 IDE,并且即将推出专 ...
- 解决Dependency 'fastdfs-client-java’not found
如何能把 fastdfs的jar包安装到本地的仓库中(因为中央仓库没有FASTDFS的jar包地址) 1.首先去github上下载下来fastdfs的压缩包 下载链接 然后直接解压出来 2.使用cmd ...
- Spring-Boot-Starter 学习笔记(1)
Spring-Boot-Starter 1. 准备配置类和 Bean 对象 Spring Boot 提供了两个注解: @Configuration:Spring 提供的配置类注解,作用在类上,代表整个 ...
- 《HelloGitHub》第 90 期
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. https://github.com/521xueweiha ...
- JAVA动态增强一个BaseController的已经存在的接口
使用场景 前提场景 我们多个系统同时继承了某一个通用系统,通用系统的接口是不会允许随意改变的,其他子系统都依赖于Base系统的通用接口 目标需求场景 但是有一个业务,需要给某一个公共接口增加子系统独有 ...
- 一些对dp突然的理解
突然想到了一些理解,感觉有些模糊,怕忘记,就赶紧记下来就是对于状态的设计 用01背包举例子吧,我们设计状态的时候一定是要保证所有可能在最后优秀的子状态在前面的时候是能够保留下来的也就是我们的状态设计要 ...
- 基于matomo实现业务数据埋点采集上报
matomo是一款Google-analytics数据埋点采集上报的平替方案,可保护您的数据和客户的隐私:正如它官网的slogan: Google Analytics alternative that ...
- 从链接器的角度详细分析g++报错: (.text+0x24): undefined reference to `main'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o: in function `_start' ...