gpt4 book ai didi

c - C中不同类型的指针有什么区别

转载 作者:行者123 更新时间:2023-11-30 18:40:10 29 4
gpt4 key购买 nike

在C语言中,我们可以定义不同种类的指针,例如:

  • int *p
  • 字符*p它们都具有相同的大小,即 4 字节或 8 字节。它们都可以作为 printf("%s",p) 的参数,那么编译器如何区分它们呢?

最佳答案

你是对的。所有指针都具有相同的大小,并且它们保存相同的数据类型(内存地址)。所以,你的问题是合理的。

编译器需要知道指针指向的数据类型,以便能够找出如何处理它。例如,数组基本上是指向(最好)分配的内存区域的指针。因此,a[1]*(a+1) 的简写。但是数组的下一个元素从哪里开始呢?编译器无法知道这一点,除非您的指针有类型。例如,如果您告诉他 a 指向 int(4 个字节),例如 a = 0x100,他就会知道 a+10x104,因为那是下一个元素的地址。

此外,了解指针指向的数据类型对于了解如何取消引用指针(解释数据)至关重要。

关于c - C中不同类型的指针有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27052988/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com