C指针一:指针变量提取内容的宽度和指针变量+1的跨度

今天药忘吃喽~ 2022-05-13 02:16 273阅读 0赞

指针变量提取内容的宽度和指针变量+1的跨度:

指针变量所提取的内容宽度,由指针变量所指向的类型长度决定。就是说,指针变量之所以知道要从指定位置取出几个字节,是由指针变量所指向的类型决定,现在这个类型就是int,与所保存的地址对应的变量类型一致,所以就正好取出其内容。、

指针变量+1的跨度,也是由指针变量所指向的类型决定的。

通过以上两点总结,给出对应的如下代码:

  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include<stdio.h>
  3. #include<stdlib.h>
  4. int main()
  5. {
  6. int *p = (void *)0;
  7. //用p输出时,因为是地址,所以高位的0不会省略。
  8. printf("%p\n", (p + 1));//0000 0000 0000 0004
  9. system("pause");
  10. return 0;
  11. }

小练习:有变量:int a = 0x01020304;需要取出0203(作输出时高位的0会被省略)。

  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include<stdio.h>
  3. #include<stdlib.h>
  4. int main()
  5. {
  6. int num = 0x01020304;
  7. //解法一
  8. printf("%#x\n", *(short *)((char *)&num + 1));//0x203
  9. //解法二
  10. printf("%#x\n", *(short *)((char *)((short *)&num + 1) - 1));//0x203
  11. system("pause");
  12. return 0;
  13. }

这里给出了2中解法。当然,还有多种方法任你选择~。

发表评论

表情:
评论列表 (有 0 条评论,273人围观)

还没有评论,来说两句吧...

相关阅读

    相关 指针变量

    定义: 在C语言中,可以定义一种特殊的变量,这种变量只是用来存放内存地址的,这种用来存放地址的变量称为指针变量。 有一种查资料的时候,我就看到过一个很形象的比喻来说明C

    相关 指针变量

    指针变量: 就是存放地址的变量。地址(指针)也是数据,可以保存在一个变量中。保存地址(指针)数据的专用变量称为指针变量。 指针变量p中的值是一个地址值,可以说指针变量p指向

    相关 指针变量

    一:指针变量的定义 类型说明符 \变量名; eg:int \p;\表示这是一个指针变量,变量名即为指针变量名,类型说明符表示该指针变量所指向地址的数据类型。 二:指针的赋

    相关 指针指针变量(转)

    通常指针变量的使用是:先定义指针变量,后给指针变量赋值,最后引用指针变量。现说明如下:   (1)定义指针变量   在变量定义语句int \p, \p1, \q; 中用