首页 > 其他分享 >【C语言基础】 指针变量-printf %d和%p的含义

【C语言基础】 指针变量-printf %d和%p的含义

时间:2023-11-07 11:57:40浏览次数:70  
标签:输出 变量 十六进制 C语言 地址 printf 指针

1.指针变量的值是地址,地址通常用16进制表示

2.int a=1;

int* p=&a;

printf("%d\n",p);和printf("%p\n",p);有什么区别呢,输出的都是p的值,%p是把指针变量p中存储的a的地址以十六进制形式输出,%d是吧p中存储的a的地址以十进制形式输出。输出的都是p的值,不要理解成%p,是把p的地址输出。

%p就是专门给指针变量使用的,输出指针变量中存储的值,也就是其他变量的地址,只不过是以十六进制形式输出。

那么又有一个问题了,既然%p的都是十六进制的,那么用%x不行吗?

%p就是专门给指针变量使用的,输出的是以十六进制形式表示的地址。%x是将变量以十六进制形式输出,当想看指针变量中存储了什么地址的时候,就用%p。

下面用程序看一下运行结果:

#include<stdio.h>
 
int main(void)
{
	int a = 1;
	int* p = &a;
	printf("%d\n", p);
	printf("%p\n", p);//这个才是最正确的,指针变量就搭配%p进行输出
	printf("%x\n", p);
	printf("\n");
	printf("%d\n", &a);
	printf("%x\n", &a);
	printf("%p\n", &a);//这个才是最正确的,&a是一个指针
 
 
	return 0;
}

结果:

13630412
00CFFBCC//%p
cffbcc

13630412
cffbcc
00CFFBCC//%p
请按任意键继续. . .


————————————————
版权声明:本文为CSDN博主「小哇123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_39224221/article/details/120056798

标签:输出,变量,十六进制,C语言,地址,printf,指针
From: https://www.cnblogs.com/FBsharl/p/17814686.html

相关文章

  • C语言 读取csv文件
    #include<stdio.h>#include<stdlib.h>#include<string.h>#defineMAX_LINE_SIZE1024intmain(){//打开要读取的CSV文件FILE*csvFile=fopen("data.csv","r");if(csvFile==NULL){perror("Faile......
  • C语言 写入csv文件
    #include<stdio.h>intmain(){//打开要写入的CSV文件FILE*csvFile=fopen("data.csv","w");if(csvFile==NULL){perror("Failedtoopenfile");return1;}//示例数据constchar*name......
  • sizeof结构体数组指针和sizeof数组指针的区别
    请思考一下以下代码输出的sizeof分别是多少?#include<stdio.h>typedefstruct{charname[100];unsignedcharage;}student_t,*student_ptr;intmain(intargc,char*argv[]){student_tstu={0};student_ptrpStu=&stu;charname[100]={0};......
  • 重学C语言——变量及其生命周期
    上一篇blog中,我们写了两个程序,一起来回顾一下~#include<stdio.h>intmain(){ inta=10; printf("%d\n",a); return0;}在这个程序中,我们定义了一个名为a的变量,并申请了4个字节的内存空间,用来存放10这个整数。#include<stdio.h>intmain(){ chara='h'; printf(......
  • C语言结构体指针
    C语言结构体指针当一个指针变量指向结构体时,称它为结构体指针。C语言结构体指针的定义形式一般为:struct结构体名*变量名;下面是一个定义结构体指针的实例://结构体structstu{char*name;//姓名intnum;//学号intage;//年龄chargroup;//所在小组floatscor......
  • 实验二 C语言分支与循环基础应用
    1.实验11#include<stdio.h>2#include<stdlib.h>3#include<time.h>45#defineN56#defineN13747#defineN246589intmain()10{11intnumber;12inti;1314srand(time(0));1516for(i=......
  • cf1322BPresent(基数排序+双指针+拆位)
    cf1322BPresent首先拆位是显然的,对于两个数a[i],a[j],除了考虑当前位上的数,我们还要考虑是否会产生进位,我们可以利用基数排序+双指针,因为我们每次都是将低位的排好序了,所以我们可以用双指针计算进位,然后分类计算一下,当前为为1的情况即可。#include<cstdio>#include<algorithm>#......
  • 实验三 类与指针、数组
    1#pragmaonce2#include<iostream>34usingstd::cout;56usingstd::endl;78classPoint{910public:11Point(intx0=0,inty0=0);12~Point()=default;13intget_x()const;14intget_y()const;15vo......
  • 实验三:类与数组、指针。
    实验任务11#pragmaonce23#include<iostream>4usingstd::cout;5usingstd::endl;67classPoint{8public:9Point(intx0=0,inty0=0);10~Point()=default;1112intget_x()const;13intget_y()const;14......
  • std::sort 传入成员函数指针报错的解决方案
    问题引入有一个类A,A的某个成员函数需要对A的某些变量进行std::sort,同时要调用A的另一个成员函数作为比较器。如代码所示:structA{vector<int>pos={0,4,2,5,3};boolcmp(intx,inty){returnpos[x]<pos[y];}voiddemo(){vector<int>a={2......