C++打印地址信息实现方法介绍

开发 后端
C++打印地址信息的实现,可以使用sprintf中提供的%p来专门进行处理。希望这里介绍的操作方法可以为大家的学习带来一些帮助。

C++编程语言中,要想实现信息的打印,可以使用sprintf()这一方法来实现。在这篇文章中,我们将会为大家详细介绍一下有关C++打印地址信息的实现方法,方便大家对sprintf()有一个详尽的了解。

有时调试程序时,我们可能想查看某些变量或者成员的地址,由于地址或者指针也不过是个32 位的数,你完全可以使用打印无符号整数的"%u"把他们打印出来:

  1. sprintf(s, "%u", &i); 

不过通常人们还是喜欢使用16 进制而不是10 进制来显示一个地址:

  1. sprintf(s, "%08X", &i); 

然而,这些都是间接的方法,对于C++打印地址信息,sprintf 提供了专门的"%p":

  1. sprintf(s, "%p", &i); 

我觉得它实际上就相当于:

  1. sprintf(s, "%0*x", 2 * sizeof(void *), &i); 

利用sprintf 的返回值

较少有人注意printf/sprintf 函数的返回值,但有时它却是有用的,spritnf 返回了本次函数调用最终打印到字符缓冲区中的字符数目。也就是说每当一次sprinf 调用结束以后,你无须再调用一次strlen 便已经知道了结果字符串的长度。如:int len = sprintf(s, "%d", i);对于正整数来说,len 便等于整数i 的10 进制位数。下面的是个完整的例子,产生10 个[0, 100)之间的随机数,并将他们C++打印地址信息到一个字符数组s 中,以逗号分隔开。

  1. #include   
  2. #include   
  3. #include   
  4. int main() {  
  5. srand(time(0));  
  6. char s[64];  
  7. int offset = 0;  
  8. for(int i = 0; i < 10; i++) {  
  9. offset += sprintf(s + offset, "%d,", rand() % 100);  
  10. }  
  11. s[offset - 1] = '\n';//将***一个逗号换成换行符。  
  12. printf(s);  
  13. return 0;  

设想当你从数据库中取出一条记录,然后希望把他们的各个字段按照某种规则连接成一个字符串时,就可以使用这种方法,从理论上讲,他应该比不断的strcat 效率高,因为strcat 每次调用都需要先找到***的那个''的位置,而在上面给出的例子中,我们每次都利用sprintf 返回值把这个位置直接记下来了。

C++打印地址信息的具体实现方法就为大家介绍到这里。

【编辑推荐】

  1. C++格式化字符串相关应用解析
  2. C++枚举子相关类型解析
  3. C++枚举类型用途及定义详解
  4. C++继承基础概念详解
  5. C++逗号操作符应用方法详解
责任编辑:曹凯 来源: 博客园
相关推荐

2010-02-03 16:35:45

C++回文

2010-02-03 15:52:55

C++ clock()

2010-02-03 10:50:33

C++多态

2010-02-02 09:49:02

C++模板

2010-02-05 10:46:10

C++文件流

2010-01-25 14:10:21

C++堆栈

2010-02-01 17:31:06

C++类成员

2011-07-13 11:34:58

CC++时间函数

2010-01-26 09:50:30

C++接口

2010-01-18 14:41:52

Visual C++开

2010-01-27 15:54:49

C++实现程序

2009-08-05 16:29:18

C#调用C++动态链接

2010-02-01 15:26:44

C++ inline函

2010-01-15 15:52:18

CC++

2010-01-22 13:31:58

C++标准库

2010-01-15 10:41:06

CC++

2010-02-03 09:43:16

C++单例模式

2010-01-26 10:27:43

C++语言

2009-08-19 09:57:01

C++ RAII

2010-02-04 11:23:25

C++反射机制
点赞
收藏

51CTO技术栈公众号