C-W*_*012 5 c memory arrays pointers initialization
我正在阅读一些源代码,发现一个功能基本上允许您将数组用作链表?该代码的工作原理如下:
#include <stdio.h>
int
main (void)
{
int *s;
for (int i = 0; i < 10; i++)
{
s[i] = i;
}
for (int i = 0; i < 10; i++)
{
printf ("%d\n", s[i]);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我知道s在这种情况下指向数组的开头,但从未定义数组的大小。为什么这样做,它的局限性是什么?内存损坏等
我知道在这种情况下 s 指向数组的开头
否 指针具有自动存储持续时间且未初始化
int *s;
Run Code Online (Sandbox Code Playgroud)
所以它有一个不确定的价值,而且没有指向任何地方。
但从未定义数组的大小
程序中既没有声明也没有定义数组。
为什么这样做,它的局限性是什么?
它偶然起作用。那就是当你运行它时它产生了预期的结果。但实际上该程序具有未定义的行为。
| 归档时间: |
|
| 查看次数: |
182 次 |
| 最近记录: |