如何解决C ++多次打印“一次*一些*是*另一个*”,而我没有在代码中打印任何内容我需要在下一个半小时内回答
我尝试用随机值填充二维数组:
for(int i = 0; i < size; i++)
{
for(int j = 0; j < size; j++)
{
int temp = rand();
*(array + i * size + j) = &temp;
}
}
在代码的前面设置了大小变量。数组初始化:
int** array = new int * [5];
for(int i = 0; i < 5; i++)
array[i] = new int[5];
除了以后的代码,我什么也不做。请帮助。
解决方法
啊哈,指针:D
对于数组,可以使用[]
运算符通过元素的索引访问元素。
那会改变你的:
int temp = rand();
*(array + i * size + j) = &temp;
进入(请注意,两者具有完全相同的效果):
int temp = rand();
array[i * size + j] = &temp;
哪个更清洁!而且还假。现在,您正在访问两个二维数组的元素,即数组。并且将指向int的指针分配给数组可能会给您一个错误。
我了解您的思考过程,但是如果您想在单个维中伪造两个尺寸,则使用i * size + j
,这里不需要^^。您需要访问i,j处的元素,并像普通int一样直接为其分配temp。那么如何访问这个元素?这样:
int temp = rand();
array[i][j] = temp;
如果出于某种原因希望保留指针,也可以通过以下方式访问它:
int temp = rand();
*(*(array + i) + j) = &temp;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。