C语言%p的含义

#include<stdio.h>
void main()
{
int number=0;
int *pointer=NULL;

number=10;
printf("number's address:%p\n",&number);
printf("number's value:%d\n",number);

pointer=&number;

printf("pointer's address:%p\n",&pointer);
printf("pointer's value:%p\n",pointer);
printf("value pointed to:%d\n ",*pointer);
}
这里用%p输出各个变量的地址,我想问一下各位程序高手,这里的%p的含义到底是什么,是什么格式的,是不是和%x相同的,谢谢了

    格式控制符“%p”中的p是pointer(指针)的缩写。指针的值是语言实现(编译程序)相关的,但几乎所有实现中,指针的值都是一个表示地址空间中某个存储器单元的整数。printf函数族中对于%p一般以十六进制整数方式输出指针的值,附加前缀0x。

    %p是打印地址的, %x是以十六进制形式打印, 完全不同!另外在64位下结果会不一样, 所以打印指针老老实实用%p .

    测试代码 :

#include<stdio.h>

int main()

{

int arr[5] = {10,20,30,40,50};

int i = 0;

printf("数据:\n\n");

printf("十进制表示的数据:\n");

for(i = 0 ; i < 5 ; i++)

{

printf("%d\t",arr[i]);

}

printf("\n\n指针形式十六进制表示的数据:\n");

for(i = 0 ; i < 5 ; i++)

{

printf("%p\t",arr[i]);

}

printf("\n\n普通十六进制表示的数据:\n");

for(i = 0 ; i < 5 ; i++)

{

printf("%x\t",arr[i]);

}

printf("\n\n\n地址:\n");

printf("\n\n十进制表示的地址:\n");

for(i = 0 ; i < 5 ; i++)

{

printf("%d\t",&arr[i]);

}

printf("\n\n指针形式十六进制表示的地址:\n");

for(i = 0 ; i < 5 ; i++)

{    

printf("%p\t",&arr[i]);

}

printf("\n\n普通十六进制表示的地址:\n");

for(i = 0 ; i < 5 ; i++)

{

printf("%x\t",&arr[i]);

}

printf("\n");

}

输出结果

拓展资料

C是一种通用的编程语言,广泛用于系统软件与应用软件的开发。于1969年至1973年间,为了移植与开发UNIX操作系统,由丹尼斯·里奇与肯·汤普逊,以B语言为基础,在贝尔实验室设计、开发出来。

C语言具有高效、灵活、功能丰富、表达力强和较高的可移植性等特点,在程序设计中备受青睐,成为最近25年使用最为广泛的编程语言[2]。目前,C语言编译器普遍存在于各种不同的操作系统中,例如Microsoft Windows、macOS、Linux、Unix等。C语言的设计影响了众多后来的编程语言,例如C++、Objective-C、Java、C#等。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言的标准。二十世纪八十年代至今的有关程序开发工具,一般都支持匹配ANSI C的语法。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-11-13
%p表示输出这个指针。更具体用法可参考百度百科的词条printf

printf

功 能:
产生格式化输出的函数
用 法:
int printf(const char *format,[argument]);
format 参数输出的格式,定义格式为:
%[flags][width][.perc] [F|N|h|l]type
([]中的内容表示是可根据实际需要选择的,实际使用时不用加[],type即是你看到的%p对应的p)
规定数据输出方式,具体如下:
1.type 含义如下:
d 有符号10进制整数
i 有符号10进制整数
o 有符号8进制整数
u 无符号10进制整数
x 无符号的16进制数字,并以小写abcdef表示
X 无符号的16进制数字,并以大写ABCDEF表示
F/f 浮点数
E/e 用科学表示格式的浮点数
g 使用%f和%e表示中的总的位数表示最短的来表示浮点数 G 同g格式,但表示为指数
c 单个字符
s 字符串
% 显示百分号本身
p 显示一个指针,near指针表示为:XXXX
far 指针表示为:XXXX:YYYY
n 相连参量应是一个指针,其中存放已写字符的个数本回答被网友采纳
第2个回答  2009-11-13
%p 表示Pointer address 格式为 0000:0000 16进制表示中间用冒号隔开
%x只是输出16进制数,没有分隔符
第3个回答  2014-12-29
这里的%p跟%x不一样的,%x表示输出的值为十六进制的意思,%p是指向变量的地址,
第4个回答  2009-11-14
%d %i Decimal signed integer.
%o Octal integer.
%x %X Hex integer.
%u Unsigned integer.
%c Character.
%s String. See below.
%f double
%e %E double.
%g %G double.
%p pointer.
%n Number of characters written by this printf.
No argument expected.
%% %. No argument expected.

p 显示一个指针,near指针表示为:XXXX
far 指针表示为:XXXX:YYYY

参考资料:http://baike.baidu.com/view/410546.htm

相似回答