关于指针+1的奇葩习题

简介: 关于指针+1的奇葩习题
 #define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
struct test
{
  int m;
  char* s;
  short p;
  char a[2];
    short q[4];
}*p;
int main()
{
  p = (struct test*)0x100000;
  printf("%p\n", p + 0x1);
//0x00 10 00 14 ->14等于十进制的20 即p原类型是一个结构体类型其大小为20byte所以当+1就会直接加20
  printf("%p\n", (unsigned long)p + 0x1);
//此处将p强转成了无符号的长整形既然是整形就直接+1即可
  printf("%p\n", (unsigned int *)p + 0x1);
//此处转化成了无符号int * 所以其大小又变成了4所以+1就是+4
  return 0;
}

image.png

所以对于指针的加1问题,总结来说有:

  1. 清楚其类型
  2. +1都是按照类型来加的,其是类型,就加上该类型的大小
  3. 如果是整形,就直接相加即可
相关文章
|
8天前
|
人工智能 C++
指针习题笔记(较难,可用于思维锻炼)
指针习题笔记(较难,可用于思维锻炼)
11 4
|
7月前
|
编译器 C语言 C++
带你刷笔试关的小怪|详解指针习题和面试题【C语言/指针/进阶】
带你刷笔试关的小怪|详解指针习题和面试题【C语言/指针/进阶】
41 0
|
9月前
指针 和 数组 习题总结
指针 和 数组 习题总结
|
存储 C语言 C++
C语言进阶第四篇【指针习题详解】(下)
C语言进阶第四篇【指针习题详解】(下)
105 0
C语言进阶第四篇【指针习题详解】(下)
|
存储 编译器 vr&ar
C语言进阶第四篇【指针习题详解】(上)
C语言进阶第四篇【指针习题详解】(上)
81 0
C语言进阶第四篇【指针习题详解】(上)
|
人工智能 算法 程序员
蓝桥杯第十一讲--双指针【例/习题】
蓝桥杯第十一讲--双指针【例/习题】
115 0
蓝桥杯第十一讲--双指针【例/习题】
|
3天前
|
存储 编译器 C语言
C语言初阶⑦(指针初阶)知识点+笔试题(上)
C语言初阶⑦(指针初阶)知识点+笔试题
10 0
|
1天前
|
C语言
C语言指针——练习
C语言指针——练习
|
2天前
|
存储 编译器 C语言
C语言内功修炼--指针详讲(进阶)
C语言内功修炼--指针详讲(进阶)
|
2天前
|
存储 C语言
C语言内功修炼---指针详讲(初阶)
C语言内功修炼---指针详讲(初阶)

热门文章

最新文章