gpt4 book ai didi

c - 为什么我的代码没有限制?

转载 作者:太空宇宙 更新时间:2023-11-04 05:01:43 25 4
gpt4 key购买 nike

这是我的代码:

#include<stdio.h>

int main()
{
int vet[10], i;

for(i=30; i<=45; i++)
{
scanf("%d", &vet[i]);
}

for(i=30; i<=45; i++)
printf(" %d ", vet[i]);

for(i=30; i<=45; i++)
printf(" %x", &vet[i]);

return 0;
}

我在内存中只声明了 10 个 int 类型的位置,但我得到了更多,所以发生了什么?是不是内存溢出了?

类型 %x 是否正确打印内存地址?

输入是:

1
2
3
4
5
6
7
8
9
10 /*It was to be stoped right here !?*/
11
12
13
14
15
16

并返回:

1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  /*I put space to indent*/

22ff6c 22ff70 22ff74 22ff78 22ff7c 22ff80 22ff84 22ff88 22ff8c 22ff90 22ff94 22ff98 22ff9c 22ffa0 22ffa4 22ffa8

最佳答案

当您访问数组进行读取或写入时,C 语言不会检查边界。程序作者要确保程序只访问有效的数组元素。

在这种情况下,您将值写入您声明的数组之外 的内存地址。虽然在这种情况下您有时可能会遇到分段违规 (SIGSEGV),但您可能只是“幸运”——真的,倒霉——并且在运行时不会遇到任何问题。

关于c - 为什么我的代码没有限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20765647/

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