内容参考自:点击打开链接

我们知道在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); 来对比一下。

关于printf(%p,p);使用方法的一些总结相关推荐

  1. STM32串口通信中使用printf发送数据配置方法 开发环境 Keil

    STM32串口通信中使用printf发送数据配置方法(开发环境 Keil RVMDK) 已有 12456 次阅读2011-6-29 23:29 | 在STM32串口通信程序中使用printf发送数据, ...

  2. 【嵌入式笔记】简要谈一谈嵌入式开发中重写printf的几种方法

    文章目录 抛砖引玉 1 宏定义替换 2 直接重写printf函数的实现 3 重写fputc/putchar接口 4 仿照POSIX的实现,从文件描述符0/1/2上面做文章 总结 更多分享 摘要 简单总 ...

  3. 关于在arm裸板编程时使用printf问题的解决方法

    在ARM裸板驱动编程中,是不允许程序直接调用C库程序的.为什么呢?因为此时kernel还没有被加载,所以在封装在kernel层的C库的API是用不了的,那怎么办? 在开发过程中,printf的功能我不 ...

  4. 这两种printf()函数重定向方法,太实用了

    作者:echobright 原文链接:https://blog.csdn.net/qq_29344757/article/details/75363639 在前面学习了STM32的串口编程,通过USA ...

  5. c语言printf使用方法,C/C++语言printf命令使用方法

    在C语言以及其它语言中我们经常看到printf命令,那么怎么使用该命令输出想要的结果呢?下面就为大家演示. 1.printf()函数是一个格式化输出函数, 用户可以通过该命令向标准输出设备输出指定的格 ...

  6. c++重定向后恢复_【STM32CubeIDE】重定向printf

    文章导读 本文主要内容为在CubeIDE中(也可以说基于HAL库或CubeMX)实现printf函数重定向问题.具体包括重定向printf的重要性.原理.方法.可能遇到的问题等. 关键词:HAL库,S ...

  7. Keil MDK 中利用串口及c标准库函数printf为cortex-m3做调试输出(lpc1788)

    摘要: c标准库的printf是输出给显示器的,将printf函数进行修改,使其输出重定向至串口,就能实现目的.printf函数调用fputc函数完成实质输出单一字符的工作,因此将fputc函数修改使 ...

  8. printf输出字符串_C语言入门必学第一课,学习“输入与输出”!

    数据输入 编写程序的主要目的就是为了处理数据.数据从哪里来?数据的来源有很多种方式,如从磁盘文件中读取数据.从数据库中读取数据.从网页中抓取数据等,还有一种原始的方式就是从键盘输入数据. 在C语言中, ...

  9. php 输出text格式化,php printf() 输出格式化的字符串,phpprintf

    php printf() 输出格式化的字符串,phpprintf php printf() 函数用于输出格式化的字符串,本文章向码农介绍php printf()函数的使用方法和基本使用实例,感兴趣的码 ...

最新文章

  1. c++控制台应用每一列数据如何对齐_Python数据分析第五节 pandas入门
  2. 淮海工学院软件测试技术实验三功能测试,软件工程-实验3软件测试技术实验(7页)-原创力文档...
  3. Linux基础命令---zip
  4. 每天学一点儿shell:正则表达式
  5. C语言再学习 -- 查看版本及内核信息(转)
  6. 信息安全不可错过的30门实验
  7. java1121123211234321_使用for 语句打印显示下列数字形式:n=4 1 1 2 1 1 2 ,使用for 语句打印显示下列数字形式:n=4...
  8. python getopt_Python getopt
  9. AO*算法详解,附例子和算法详细步骤
  10. 图像3A算法及伽马校正原理及部分实现
  11. 不同版本的Python,如何pip
  12. solidworks分析视频教程-结构应力仿真有限元虚拟样机及流场分析
  13. Django入门,,适用小白
  14. 组卷积和深度可分离卷积
  15. 关于电视剧《狂飙》的一点感悟--贵人相助的重要性
  16. EfficientNet介绍
  17. 海康威视错误代码说明
  18. poi 修改标题字体,单独修改标题字体样式
  19. vs2015 x86的Qt项目迁移到vs2017 x64平台
  20. Perl CGI重构原则

热门文章

  1. 使用原生Ajax技术实现异步交互
  2. android 横屏切换竖屏 卡顿,Android横竖屏切换卡顿问题
  3. 内网穿透工具Neo-reGeorg的测试
  4. 5G与智慧杆将擦出什么样的火花?
  5. kkb接单平台项目与读书笔记
  6. java中修饰符总结
  7. golang中的atomic,以及CAS操作
  8. 机器学习模型自我代码复现:GBDT
  9. 美剧越狱英语口语句子集锦
  10. 元宇宙的价值链:体验、发现、创造者经济、空间计算、人机界面