intptr_t 其实不是指针类型

编程技术  /  houtizong 发布于 3年前   109
原文地址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 plaincopystatic 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 plaincopy78 typedef intptr_t        ngx_int_t;  于是在linux的头文件中查找这个类型的定义,在/usr/include/stdint.h这个头文件中找到了这个类型的定义(不知道怎么在这里插入图片,所以使用文字):                           [cpp] view plaincopy117 /* 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内核源码》中找到了答案,原文描述如下:尽管在混合不同数据类型时你必须小心, 有时有很好的理由这样做. 一种情况是因为内存存取, 与内核相关时是特殊的. 概念上, 尽管地址是指针, 内存管理常常使用一个无符号的整数类型更好地完成; 内核对待物理内存如同一个大数组, 并且内存地址只是一个数组索引. 进一步地, 一个指针容易解引用; 当直接处理内存存取时, 你几乎从不想以这种方式解引用
上一篇:gdb笔记
下一篇:qemu

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客