所以,我现在正在学习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],则可能会破坏一些内存。