关于指针+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. 如果是整形,就直接相加即可
相关文章
|
7月前
|
编译器 C语言 C++
带你刷笔试关的小怪|详解指针习题和面试题【C语言/指针/进阶】
带你刷笔试关的小怪|详解指针习题和面试题【C语言/指针/进阶】
39 0
|
9月前
指针 和 数组 习题总结
指针 和 数组 习题总结
|
存储 C语言 C++
C语言进阶第四篇【指针习题详解】(下)
C语言进阶第四篇【指针习题详解】(下)
104 0
C语言进阶第四篇【指针习题详解】(下)
|
存储 编译器 vr&ar
C语言进阶第四篇【指针习题详解】(上)
C语言进阶第四篇【指针习题详解】(上)
80 0
C语言进阶第四篇【指针习题详解】(上)
|
17天前
|
C语言
C语言:数组和指针笔试题解析(包括一些容易混淆的指针题目)
C语言:数组和指针笔试题解析(包括一些容易混淆的指针题目)
|
1月前
|
存储 程序员 编译器
爱上C语言:指针很难?来来来,看看这篇(基础篇)
爱上C语言:指针很难?来来来,看看这篇(基础篇)
|
6天前
|
C语言
c语言指针总结
c语言指针总结
12 1
|
17天前
|
存储 C语言
指针深入解析(C语言基础)带你走进指针,了解指针
指针深入解析(C语言基础)带你走进指针,了解指针
|
17天前
|
C语言 C++
C语言:指针运算笔试题解析(包括令人费解的指针题目)
C语言:指针运算笔试题解析(包括令人费解的指针题目)
|
19天前
|
安全 C语言
指针与字符串:C语言中的深入探索
指针与字符串:C语言中的深入探索
15 0

热门文章

最新文章