文心阁 可爱,六小龄童春晚视频,大时代毛巾53shop
#include <stdio.h> int main(){ int i = 123456789;//i的值用16进制表示就是:0x075bcd15 char *c = (char*)&i; printf("char:%d\n", *c);//打印出21,因为是char类型的指针,所以去1个字节,也就是去的是16进制的15,十进制就是21. short *s = (short*)&i; printf("short:%d\n", *s);//打印出-13035,因为是char类型的指针,所以去2个字节也就是去的是16进制的cd15,十进制就是-13035 int *pi = &i; printf("int:%d\n", *pi);//打印出123456789 }
(gdb) p/a i
$4 = 0x75bcd15
(gdb) p 0x15
$6 = 21
(gdb) p/a -13035
$3 = 0xffffffffffffcd15
#include <stdio.h> int main(){ int *p = (int*)0x7fffffffe1e4; printf("int p=%p, p+1=%p\n", p,p+1);//int p=0x7fffffffe1e4, p+1=0x7fffffffe1e8 char *c = (char*)p; printf("char p=%p, p+1=%p\n", c,c+1);//char p=0x7fffffffe1e4, p+1=0x7fffffffe1e5 short *s = (short*)p; printf("short p=%p, p+1=%p\n", s,s+1);//short p=0x7fffffffe1e4, p+1=0x7fffffffe1e6 double *d = (double*)p; printf("double p=%p, p+1=%p\n", d,d+1);//double p=0x7fffffffe1e4, p+1=0x7fffffffe1ec int ar[10] = {0}; int (*pa)[10] = &ar; //pa是10个元素的int数组的指针,所以pa+1后,就移动了40(4*10)个字节 printf("ar[10] p=%p, p+1=%p\n", pa,pa+1);//ar[10] p=0x7fffffffe1b0, p+1=0x7fffffffe1d8 }
(gdb) p 0xd8-0xb0
$3 = 40
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
如何在没有core文件的情况下用dmesg+addr2line定位段错误
用QT制作3D点云显示器——QtDataVisualization
网友评论