求助呀,一个指针占4个字节,我怎么把那四个字节的没个字节都打印出来
答案:1 悬赏:40 手机版
解决时间 2021-03-29 21:47
- 提问者网友:蓝琪梦莎
- 2021-03-29 13:44
求助呀,一个指针占4个字节,我怎么把那四个字节的没个字节都打印出来
最佳答案
- 五星知识达人网友:傲气稳了全场
- 2021-03-29 15:15
你可以通过移位、强制类型转换操作来获取每个字节,如:
int x;
int *p=&x;
unsigned char c[4];
c[0]=(unsigned char)((int)p>>24);
c[1]=(unsigned char)((int)p>>16);
c[2]=(unsigned char)((int)p>>8);
c[3]=(unsigned char)(p);
printf("\np= %d, c = %d %d %d %d ",p,c[0],c[1],c[2],c[3]);追问
抱歉我少打了是指针占的4个字节每个字节的地址打印出来,就是说一个指针本身在内存里是4个字节大小,这4个字节是连续的可是我想把他们的地址都打出来,上面是我所写的,指针指向的地址都打印出来了,指针自身的能?
抱歉给您添麻烦了,谢谢您的解答
追答如果是取指针自身的地址,可以直接&ptr得到首字节地址,然后依次加1得到后续3个字节的地址。
char *ptr="some text";
for(int i=0;i printf("id of ptr[%d]%d = %d \n",i,ptr[i],&ptr[i]);
int addr;
addr= (int)(&ptr);
for(int i=0;i printf("address of ptr[%d] = %d \n",i ,addr++);
int x;
int *p=&x;
unsigned char c[4];
c[0]=(unsigned char)((int)p>>24);
c[1]=(unsigned char)((int)p>>16);
c[2]=(unsigned char)((int)p>>8);
c[3]=(unsigned char)(p);
printf("\np= %d, c = %d %d %d %d ",p,c[0],c[1],c[2],c[3]);追问
抱歉我少打了是指针占的4个字节每个字节的地址打印出来,就是说一个指针本身在内存里是4个字节大小,这4个字节是连续的可是我想把他们的地址都打出来,上面是我所写的,指针指向的地址都打印出来了,指针自身的能?
抱歉给您添麻烦了,谢谢您的解答
追答如果是取指针自身的地址,可以直接&ptr得到首字节地址,然后依次加1得到后续3个字节的地址。
char *ptr="some text";
for(int i=0;i
int addr;
addr= (int)(&ptr);
for(int i=0;i
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯