gpt4 book ai didi

c++ - 指针问题

转载 作者:行者123 更新时间:2023-11-28 08:22:21 26 4
gpt4 key购买 nike

我有一个问题。我创建了一个正确初始化的整数指针 整数 * p 和一个正确初始化的整数数组 int * array1 = new int[]

以下哪些是合法的代码?

p = array1;

array1 = p;

或者两者都正确?

这也可以吗p[0] 因为,根据我的指针算术知识,它不会添加任何内容。

全部在 C++ 中

最佳答案

如果问题是尝试比较指针和数组,它们并不总是兼容的。这在提供的代码中是隐藏的,因为数组会立即转换为指针。

int*  array1   = new int[5]; // Legal, initialising pointer with heap allocated array
int array2[5] = {0}; // Declaring array directly on the stack and initalising with zeros
int *p = 0; // Declaring pointer and initialising to numm
p = array2; // Legal, assigning array to pointer
p = array1; // Legal, assigning pointer to pointer
array1 = p; // Legal, assigning pointer to pointer
array2 = p; // ILLEGAL, assigning pointer to array

这里array2是数组类型,不能用来存放指针。实际上,数组根本无法重新分配,因为它不是左值。

int array3[5] = {0}; // Declaring array directly on the stack and initalising with zeroes
array3 = array2; // ILLEGAL, array not an l-value

数组有一个固定地址,重新分配它类似于尝试写入:

int i = 0;
&i = p;

[希望重新分配变量的位置显然是无稽之谈。]

关于c++ - 指针问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5334957/

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