gpt4 book ai didi

c - 未经许可更改内存值

转载 作者:行者123 更新时间:2023-11-30 18:21:31 25 4
gpt4 key购买 nike

我有一个二维数组,当我第一次打印数组的数据时,日期打印正确,但其他时候数组[last][i]的数据从 i = 0 到最后 - 1.

显然是一个逻辑错误,但我不明白原因,因为我复制并粘贴了for语句。那么... ¿C 更改数据吗?

我使用 gcc -std=c99 但在此之前我尝试使用 C++ 和 cout 语句。

This is the output screenshot

#include <stdio.h>

int main(int argc, char *argv[])
{
unsigned int numero_jugaderes = 11;
unsigned int numero = numero_jugaderes - 1;

unsigned int p_a[numero];

float p_aya[numero][numero];

for (unsigned int i = 0; i <= numero; i++) {
p_a[i] = i;
}

for (unsigned int i = 0; i <= numero; i++) {
for (unsigned int j = 0; j <= numero; j++) {
p_aya[i][j] = (float) (p_a[i] * p_a[j]) / 100;
printf("%f\t", p_aya[i][j]);
}
puts("");
}

puts("\n");

for (unsigned int i = 0; i <= numero; i++) {
for (unsigned int j = 0; j <= numero; j++) {
printf("%f\t", p_aya[i][j]);
}
puts("");
}

return 0;
}

最佳答案

我认为的问题是,您正在循环进行条件检查,例如

 for (unsigned int i = 0; i <= numero; i++) 

对于定义为的数组

unsigned int p_a[numero];

你要去 off-by-one 。这本质上是调用 undefined behavior 的无效内存访问。 .

C 数组具有从 0 开始的索引,因此有效限制为

for (unsigned int i = 0; i < numero; i++)

关于c - 未经许可更改内存值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42439447/

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