gpt4 book ai didi

c - int 指针是一个 int 数组吗?

转载 作者:太空狗 更新时间:2023-10-29 15:11:56 24 4
gpt4 key购买 nike

我一直在关注一些声明 int 指针的示例

int *myInt;

然后把那个指针变成一个数组

myInt = (int*)malloc(1024);

这个结账

myInt[0] = 5; 
cout << myInt[0]; // prints 5
myInt[1] = 7;
cout << myInt[1]; // prints 7

我认为 int 指针是指向 int 的指针,而不是其他任何东西。我知道指向字符串的指针只指向字符串的第一个字符,但看起来这里发生了与整数数组相同的事情。但是如果我们想要的是一个整数数组,为什么不直接创建一个整数数组而不是一个指向整数的指针呢?

顺便说一下,我对它在 C 而非 C++ 中的工作方式很感兴趣。这是在 C++ 文件中,但相关代码在 C 中。

最佳答案

Is an int pointer an array of ints?

没有。

I thought an int pointer was a pointer to an int and never anything else

没错。 Pointers are pointers, arrays are arrays.

让您感到困惑的是,指针可以指向数组的第一个元素,而数组可以退化为指向其第一个元素的指针。更令人困惑的是:指针与数组用于索引的解引用和指针运算具有相同的语法。即,

ptr[i]

等同于

*(ptr + i)

如果 ptr 是一个指针。当然,类似地,arr[i] 也是arr 数组的ith 元素。相似性源于指针和数组的共同性质:它们都用于间接访问(可能是 block )内存。

这种强关系的结果是,在某些情况下(并且有一些约束),数组和指针可以如同一样使用它们是可以互换的。这仍然并不意味着它们是相同的,但它们表现出足够多的共同属性,因此它们的用法通常看起来是“相同的”。

关于c - int 指针是一个 int 数组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17240686/

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