我一直在跟随一些声明整型指针的示例
int *myInt;
将指针转换为数组。
myInt = (int*)malloc(1024);
这是正确的。
myInt[0] = 5;
cout << myInt[0]; // prints 5
myInt[1] = 7;
cout << myInt[1]; // prints 7
我曾以为int指针只是指向int,没有其他用途。我知道指向字符串的指针只是指向字符串的第一个字符,但是在这里,似乎指向int数组的指针也是同样的情况。但如果我们需要的是int数组,为什么不直接创建一个int数组而不是一个int指针呢?
顺便说一下,我对C语言中的这个问题很感兴趣,而不是C++。虽然这段代码在C++文件中,但相关的代码是用C编写的。
array
的整数数组,并且您声明了一个指向该数组的指针p
,则以下表达式都具有相同的值:array[i] *(p+i) *(i+p) p[i]
这是因为在C语言中,使用数组名称作为指针会自动转换为指向该数组的第一个元素的指针。因此,以上所有表达式都是对同一内存位置中的数据进行操作。需要注意的是,尽管指针和数组名称具有等效的值,但它们并不完全相同。特别是,您不能将另一个数组的名称分配给指针变量。 - JABvoid *
指针。请注意不要改变原意。 - user405725*myInt
中。 - jonhopkinsmalloc(n * sizeof(int))
,否则您获得的整数数量可能取决于平台,因为您保留了1024个字节。这通常不是某人想要的。 - hetepeperfanint
类型,地址被存储在myInt
中,而不是*myInt
。 - detly