intptr_t 其实不是指针类型 (转载)

原文地址http://blog.163.com/james_huangjian/blog/static/178049345201261643452479/

eflag寄存器
http://www.cnblogs.com/shenlian/archive/2011/05/22/2053857.html


intptr_t 其实不是指针类型

2012-07-16 16:34:52| 分类: C++ |字号 订阅
intptr_t 其实不是指针类型
分类: C语言 2012-04-23 17:26 336人阅读 评论(0) 收藏 举报
最近在看nginx源码,看到有一个类型intptr_t,没有见过,google了一下,有人说是指针类型,但是看nginx源码中对该类型变量的使用,好像不是指针类型。

[cpp] view plaincopy
static ngx_int_t
667 ngx_get_options(int argc, char *const *argv)
668 {
669 u_char *p;
670 ngx_int_t i;
671
672 for (i = 1; i < argc; i++) {
673
674 p = (u_char *) argv[i];
675
676 if (*p++ != '-') {
677 ngx_log_stderr(0, "invalid option: \"%s\"", argv[i]);
678 return NGX_ERROR;
679 }
680
681 while (*p) {
682
683 switch (*p++) {
684
685 case '?':
686 case 'h':
687 ngx_show_version = 1;
688 ngx_show_help = 1;
689 break;
其中ngx_int_t的定义如下:
[cpp] view plaincopy
78 typedef intptr_t ngx_int_t;


于是在linux的头文件中查找这个类型的定义,在/usr/include/stdint.h这个头文件中找到了这个类型的定义(不知道怎么在这里插入图片,所以使用文字):



[cpp] view plaincopy
117 /* Types for `void *' pointers. */
118 #if __WORDSIZE == 64
119 # ifndef __intptr_t_defined
120 typedef long int intptr_t;
121 # define __intptr_t_defined
122 # endif
123 typedef unsigned long int uintptr_t;
124 #else
125 # ifndef __intptr_t_defined
126 typedef int intptr_t;
127 # define __intptr_t_defined
128 # endif
129 typedef unsigned int uintptr_t;
130 #endif

很明显intptr_t不是指针类型,但是上边的一句注释(/* Types for `void *' pointers. */)让人很疑惑。既然不是指针类型,但是为什么说类型是为了“void *”指针?
又查了一下在《深入分析Linux内核源码》中找到了答案,原文描述如下:

尽管在混合不同数据类型时你必须小心, 有时有很好的理由这样做. 一种情况是因为内存存取, 与内核相关时是特殊的. 概念上, 尽管地址是指针, 内存管理常常使用一个无符号的整数类型更好地完成; 内核对待物理内存如同一个大数组, 并且内存地址只是一个数组索引. 进一步地, 一个指针容易解引用; 当直接处理内存存取时, 你几乎从不想以这种方式解引用
AD(十四)调用已有的PCB元件封装库 软件:Altium Designer 16 需要资料:已有的PCB原理图文件(.PCBDOC)或者PCB库文件(.PCBLIB)(来源文中细说) 调用已有的PCB元件封装库(一)从已有的PCB原理图文件(*.PCBDOC)中调用1、PCB原理图文件来源2、打开已有的PCB原理图文件(*.PCBDOC)3、生成PCB封装库4、复制封装到工程文件下的PCB库文件(*.PCBLIB)5、重名问题(二)从已有的PCB库文件(*.PCBLIB)中调用1、PCB库文件(*.PCBLIB)的来源2、打开已有的PCB库 ( 阅读详情

相关推荐

保姆级教程:手把手配置AutoSar诊断复位(Dcm 0x11服务联动BswM/EcuM)

本文提供AutoSar诊断复位(Dcm 0x11服务联动BswM/EcuM)的保姆级配置教程,详细讲解从诊断服务基础配置到BswM规则引擎搭建、服务端口映射及EcuM复位执行的完整流程。通过Vector配置工具的实际截图和代码片段,帮助开发者高效实现远程复位功能,并分享调试技巧与性能优化实践。

weixin_30756499的博客 543

C#【高级篇】 IntPtr是什么?怎么用?

在C#编程中,当调用C++写的dll时,有时会用到IntPtr,那IntPtr是什么,又怎么用呢?

星Yeah 的博客 4万+

ThingsBoard入门实战(二):ThingsBoard 设备接入

文章目录ThingsBoard 设备接入一、设备配置/设备类型二、设备三、设备接入HTTPCOAPMQTT四、下一步 ThingsBoard 设备接入 设备接入并不一定需要真正的设备,我们可以通过程序。或者命令来模拟设备,向平台发送信息。 这节我们先为用户分配一个设备,然后通过模拟设备命令更新设备的状态(遥测值)。 一、设备配置/设备类型 添加一个叫"路灯"的设备配置。 设备配置听起来比较抽象,可以认为是设备类型或者是设备类型的配置。实际上,ThingsBoard 中很多时候让选择设备类型,就是选的这个。

AIGC搞起 1万+

intptr_t 其实不是指针类型

最近在看nginx源码,看到有一个类型intptr_t,没有见过,google了一下,有人说是指针类型,但是看nginx源码中对该类型变量的使用,好像不是指针类型。 static ngx_int_t 667 ngx_get_options(int argc, char *const *argv) 668 { 669 u_char *p; 670 ngx_int

Justlinux2010的专栏 1万+

【Boost5】Boost变换器的输入电容

节点的电流有3个,一个是来自电源输入的,由于我们把Vin看成理想电源以及线路的电感的存在,它可以近似看作是恒定的电流源Iin,一个是流向输入电容Cin的电流Icin,另外一个节点是电感L电流IL。电容电流波形在整个开关周期内的平均值为0,充电和放电在一个周期中各占1/2,在图中充电部分面积和放电部分面积相等,那么在充电或放电的电荷量Q=I*t,从图中可以看出,在一个周期内电容电流变化量是ΔIL,那在电容在充电1/2T周期中电流的变化量是1/2ΔIL。输入电容上的ESR也会随着电流变化,影响输入电压的变化。

qq_43416206的博客 3348

机器人手眼标定快速精度验证方法

机器人手眼标定快速精度验证方法

laoli_的博客 1万+

C语言指针

C语言指针 1、指针定义   指针是一个变量, 它保存的是另一个变量的地址, 即内存位置的直接地址。 int ptr; //整型变量,ptr+1 表示变量值+1; const int ptr;//只读变量,和int const ptr效果一致; int *ptr1; //定义一个整型指针, ptr+1 表示地址偏移 int 类型字节; int ptr[3];//3 个成员的整型数组, ptr+1 表示指向 ptr[1]的地址; int *ptr[3];//指针数组,ptr[3]是数组,int*再与 ptr[

weixin_44453694的博客 756

Python读取三菱PLC数据

3、支持自定义的数据读写操作。直接调用Read方法,可以读取到原生的byte数组,然后进行组合数据。1、每次的数据交互您都可以判断是否成功,如果您不判断,如果网络断开或是异常,会影响程序的执行。Qna3E协议的ascii类 MelsecMcAsciiNet。A兼容1E协议的二进制类 MelsecA1ENet。Qna3E协议的二进制类 MelsecMcNet。2、读写操作支持单个数和数组。

weixin_46744807的博客 1998

C#中的IntPtr类型(指针等用)

c#中无法将类型“int”隐式转换为“System.IntPtr” 这个是我引用了一个api函数时出现的问题,我在声明中把intptr换成了int还是不可以,这是为什么呢?要如何处理呢?   答: 您好,C#中的IntPtr类型称为“平台特定的整数类型”,它们用于本机资源,如窗口句柄。 资源的大小取决于使用的硬件和操作系统,但其大小总是足以包含系统的指针

u011555996的博客 4万+

用 Claude Code 快速摸清一个陌生代码库

摘要:Claude Code作为AI编码助手,能帮助开发者快速理解陌生代码库。与传统代码搜索不同,它从项目根目录出发,通过分析目录结构、配置文件等技术栈信息,提供系统级的概览。最佳实践是先通过"give me an overview"获取整体架构,再深入数据模型、认证流程等核心模块。它能生成术语表、编码规范和推荐的代码阅读路径,极大降低新成员的学习成本。相比传统方式,Claude Code能主动探索项目上下文,无需人工整理相关文件,使代码理解过程更接近有经验的工程师带教。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 91

109. SAP ABAP 应用程序中的锁机制和工作原理介绍

SAP ABAP 系统中的锁概念,是 SAP ABAP 为了保证`数据一致性`而引入的一种保护机制。 像 SAP 这种复杂的企业级应用,系统中同一时间段的同一份数据,可能会有多个 Transaction(终端用户或者 API )同时进行读写操作。为了防止出现数据不一致,SAP ABAP 引入了锁机制。 这种锁机制并非数据库服务器层面的锁,而是在 SAP ABAP 应用服务器层面上工作,加锁和解锁都由专门的 ABAP Function Module 来完成。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1467

intptr_t 与指针的区别

intptr_t在/usr/include/stdint.h文件中定义了 typedef int intptr_t; intptr_t定义的目的是为了保持地址,它与指针保存的值一样 相同点 两者保存的值一样,都是指向某个内存空间的地址值 区别 指针:能访问地址指向的内存空间 intptr_t:只是保持地址值,不能访问地址指向的内存空间 ...

oria2006的专栏 884

大数据平台符合信创(CDH国产化代替)详细方案(企业内部不外传方案)

信创旨在实现信息技术产业的自主可控,减少对外部技术的依赖,从而提升国家信息安全和经济发展的自主性。在此背景下,中国对信创提出了更高的要求,以期在激烈的市场竞争中占据有利地位。信创不仅关乎技术层面的创新,更涉及到产业链条的整合与优化。它要求从基础硬件、操作系统、数据库、中间件等各个层面实现国产替代,构建完整的信息技术生态体系。尤其是在做国企项目时,就有硬性要求使用符合信创(国产代替)。在信创背景下,符合要求的产品必须具备自主可控、安全可靠以及性能卓越等核心特点。

大模型大数据攻城狮的专栏 3510

intptr java_intptr_t 其实不是指针类型 (转载)

intptr_t 其实不是指针类型2012-07-16 16:34:52| 分类: C++ |字号 订阅intptr_t 其实不是指针类型分类: C语言 2012-04-23 17:26 336人阅读 评论(0) 收藏 举报最近在看nginx源码,看到有一个类型intptr_t,没有见过,google了一下,有人说是指针类型,但是看nginx源码中对该类型变量的使用,好像不是指针类型。[cpp]...

weixin_35924003的博客 541

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

intptr_t 其实不是指针类型 .

转载 http://blog.youkuaiyun.com/moonvs2010/article/details/7490420 最近在看nginx源码,看到有一个类型intptr_t,没有见过,google了一下,有人说是指针类型,但是看nginx源码中对该类型变量的使用,好像不是指针类型。 [cpp] view plain copy static ngx_int_t 

u011975257的博客 479

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

C语言指针转换为intptr_t类型

今天看代码的时候看到intptr_t,不明白这是什么类型,所以googling了一下,结果又学到了很多~~~ 首先总结下: intptr_t (无符号版本写成 uintptr_t)这个类型可以被安全的在 void * 和 整数间转换,对于写跨 64 位平台的程序非常重要。也就是说,当你需要把指针作为一个整数来运算时,转换成 intptr_t才是安全的,可以在运算完毕安全的转回指针类型。

Fairy的专栏 2347

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

intptr_t 类型

最近在看nginx源码,看到有一个类型intptr_t,没有见过,google了一下,有人说是指针类型,但是看nginx源码中对该类型变量的使用,好像不是指针类型。[cpp] view plain copystatic ngx_int_t 667 ngx_get_options(int argc, char *const *argv) 668 { 669 u_char

wuchunlai_2012的博客 1454

c uintptr_t

转载来源:http://www.cnblogs.com/Anker/p/3438480.html C语言指针转换为intptr_t类型 1、前言   今天在看代码时,发现将之一个指针赋值给一个intptr_t类型的变量。由于之前没有见过intptr_t这样数据类型,凭感觉认为intptr_t是int类型的指针。感觉很奇怪,为何要将一个指针这样做呢?如是果断上网查查

随手记 1万+

intptr_t 指针

对于64为系统: typedef signed char int8_t; typedef short int int16_t; typedef int int32_t; # if __WORDSIZE==64 typedef long int int64_t; #else typedef long long int int64_t; intptr_t 的定义: /* Ty...

weixin_30785593的博客 263

c# 读取IntPtr 中的数据 z

c++的写法是这样的: LRESULTCPictureQueryDlg::OnQueryPicNty(WPARAMwp,LPARAMlp) { EnableWindow(TRUE); BYTE*pbyMsg=(BYTE*)lp; //得到当前页数目 m_dwCurCount=*reinterpret_cast<DWORD*>(...

afeyfre41671的博客 2206

intptr_t 指针(转)

reference:http://muchong.com/bbs/ 对于64为系统: typedef signed char int8_t; typedef short int int16_t; typedef int int32_t; # if __WORDSIZE==64 typedef long int int64_t; #else ...

weixin_30525825的博客 236

size_t/ptrdiff_t/intptr_t/uintptr_t

1.size_t size_t是无符号整数类型,这是sizeof操作符结果的类型。如果设备的地址空间为32位,这就是一个32位无符号整数;如果设备的地址空间是64位,这就是一个64位无符号整数。换而言之,一个size_t类型的变量能够安全保存一个指针(唯一的例外是指向类函数的指针)。size_t通常用于loop计数器,数组索引和地址算数。 2.ptrdiff_t ptrdif...

weixin_34175509的博客 197

intprt_t

转载链接:http://blog.youkuaiyun.com/justlinux2010/article/details/7490420 最近在看nginx源码,看到有一个类型intptr_t,没有见过,google了一下,有人说是指针类型,但是看nginx源码中对该类型变量的使用,好像不是指针类型。 [cpp] view plain copy st

随手记 904

C语言指针的长度和类型

本文地址:http://www.cnblogs.com/archimedes/p/point-length-type.html,转载请注明源地址。 如果考虑应用程序的兼容性和可移植性,指针的长度就是一个问题,在大部分现代平台上,数据指针的长度通常是一样的,与指针类型无关,尽管C标准没有规定所有类型指针的长度相同,但是通常实际情况就是这样。但是函数指针长度可能与数据指针的长度不同。 指针的长度取...

weixin_34407348的博客 333

07深入理解C指针之---指针类型和长度

  该系列文章源于《深入理解C指针》的阅读与理解,由于本人的见识和知识的欠缺可能有误,还望大家批评指教。   如果考虑到程序的可移植性和跨平台性时,指针长度就是一个问题,需要慎重处理。一般情况下,数据指针的长度时一样的,与指针类型无关,void型指针、char型指针、结构体指针等统统是一样的,函数指针的长度一般与数据指针长度不同。指针长度与CPU有关,严格意义上说与OS究竟是32位还是64位有关...

weixin_30776545的博客 267

[转载]int,int32_t,int64_t

这些事跨平台编程导致的; 一、数据类型特别是int相关的类型在不同位数机器的平台下长度不同。C99标准并不规定具体数据类型的长度大小,只规定级别。作下比较: 16位平台 char         1个字节8位 short        2个字节16位 int            2个字节16位 long         4个字节32位 指针         2个字节

lizhifeng2009的专栏 962
上一篇: source insight快捷键(转)
下一篇: gdb log
linux内核控
博客等级 码龄19年 41粉丝 638原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值