关于printf("%p",p);使用方法的一些总结
来源:互联网 发布:python可以跨平台吗 编辑:程序博客网 时间:2024/04/29 00:12
内容参考自:点击打开链接
我们知道在C语言中用printf函数可以以不同的格式打印输出内容,如:%d,%c,%s等,这些我们都比较熟悉。
但有时候,我们会见到printf("%p\n",p);这样的语句,那么%p是什么意思呢?
下面让我们一起来看看吧。
首先说明一下,printf("%p\n",p);
就是把p2的内容当成是指针来输出,不是输出p的地址,实际上与输出十六进制格式差不多。
任何变量都有地址,变量名指向它的内容(指针的内容是地址,而非指针类型内容可能是char、int等),取地址一般得加&,可以通过%p打印出来,而指针特殊在他本身内容是地址,为此,打印%p的时候呢,如没有加&是打印的指针的内容(里面存的地址),而加&来打印指针的时候呢,打印的是该指针的存放地址而不是其内容(里面存的地址)。
下面来看一段测试代码:
#include <stdio.h>int main(void){int a=8;int *p;int *p2;printf("%p\n",&a); //变量a的地址p=&a;printf("%p\n",p); //p指针里面的内容(即变量a的地址)printf("%p\n",*p); //相当于以十六进制输出变量aprintf("%p\n",a); //相当于以十六进制输出变量ap2 = p;printf("%p\n",p2); //p2指针里面的内容(即变量a的地址)printf("p=%p\n",&p); //p指针的存储地址printf("p2=%p\n",&p2); //p2指针的存储地址printf("%d\n",*p2); //以十进制输出变量areturn 0;}
问:如果想打印p指针本身的地址,怎么写?
答:printf("%p",&p);
问:p2=p是如何赋值的?
答:p的指针内容(里面存的是个地址)赋给p2。
问:p,p2存储的内容(地址)相同,它们两个的地址也相同?
答:不同,可以通过打印他们的地址:printf("%p",&p); 与 printf("%p",&p2); 来对比一下。
0 0
- 关于printf("%p",p);使用方法的一些总结
- 关于*p++ *++p ++*p的区别
- printf %p
- 关于*p++ *(p++) (*p)++ *++p *(++p) ++*p ++(*p)
- printf("%d\n",*p+++*++p);
- printf("%p\n",&A::m_a) 中%p的意思
- char *p="%s"; printf(p);的问题
- printf("%p\n",&A::m_a) 中%p的意思
- 关于*p++, 和*++p的区别
- 关于++/--/*p++/*--p等的探究
- 关于*p++和++p*
- printf中%p的输出应用
- printf中%p的输出应用
- 关于高清,720p,1080i,1080p的一些解释及深入剖析
- p,&p,*p的区别
- p,&p,*p的区别
- p &p *p的区别
- p,&p,*p的区别
- 一段github上的一段py 使用iplist.net去反查域名,看看到底有多少个域名指向了一个IP
- 基础知识查漏补缺
- 我的读书笔记--关于java分布式应用
- JavaScript绑定事件的几种方法
- c++Primer,十三,复制控制
- 关于printf("%p",p);使用方法的一些总结
- 扩展gcd模板,a^x=b。
- 对于java表达式中存在的陷阱的一些总结(基于java程序员的基本修养)
- Xcode 工程文件打开不出来, cannot be opened because the project
- len()函数 的常见错误
- rpm 搭建和配置vsftpd服务
- CentOS下查看修改mysql编码方式
- Java基础复习——数据类型
- Android MVP MVVM Presentation Model模式与基于RoboBinding应用