C-使用Malloc的任何指针都可以视为数组



所以,我现在正在学习C,并希望对某些事情进行一些澄清。

我了解到,如果我们想创建一个动态数组,我们可以使用以下代码行:

int *arr = malloc(10 * sizeof(int));

我知道,在这种情况下,ARR是一个指针,其等效于10 ints的数组,以字节为单位。我也知道您可以将ARR视为数组(从ARR [0]到ARR [9]。

这是否意味着所有分配内存的指针都可以视为数组?

喜欢将其视为数组吗?

int *single = malloc(sizeof(int)); 

或可以将其视为数组?

int *half = malloc(sizeof(int) * 1.5)
  • 忽略数组大小,是的,所有指针都可以使用数组(这意味着您可以索引它们)。
  • 元素的数量应为整数,并具有有效访问的截断(即1.5表示1个项目)。
  • 您请求Malloc的字节数量,这是项目大小的倍数。
  • 您应该阅读有关指针算术的信息。
  • 数组名称也可以用作指针(例如 *数组),但您无法分配给它们或修改它们(例如, 数组)。

喜欢将其视为数组吗?

int *single = malloc(sizeof(int));

当然,可以将其视为数组int single[1]

或可以将其视为数组?

int *half = malloc(sizeof(int) * 1.5)

是的,但是它的效果与以前的片段相同,但您只会浪费2个字节。如果您尝试写一半[2],则可能会破坏一些内存。

相关内容

最新更新