c - `*((char*)ptr+4))` 在做什么?

标签 c pointers pointer-arithmetic

<分区>

#include<stdio.h>
main()
{
  int a[]={0,2,4,6,8};
  int *ptr;
  ptr=a;
  printf("%d", *((char*)ptr+4));
}

*((char*)ptr+4))这样做的目的是什么?

最佳答案

它将指针转换为指向 char 的指针,然后添加 4 以查看内存中 4 char 后面的内容,最后取消引用结果。在 int 占用 4 个字节的典型情况下,它将查看数组中第二个 int 的第一个字节。 char 将被提升为 int,传递给 printf,然后打印出来。

关于c - `*((char*)ptr+4))` 在做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3163335/

相关文章:

c - 将数组传递给函数

c - ruby 1.9.2 中的 rfuzz 编译错误

C - ULL 前缀,十六进制

c - 如何理解函数中的指针

CGI.c文件打开

c++ - 类析构函数和指针释放

c - 来自不相关 block 的指针的比较(>,> =,<,<=)

C- 指针、数组和结构之间的交互

常量指针数组还是指向数组的指针? C中什么更快?

c++ - 可以使用 std::uintptr_t 来避免越界指针算法的未定义行为吗?