读书人

VC上编的为什么有区别,该怎么解决

发布时间: 2012-03-14 12:01:13 作者: rapoo

VC上编的,为什么有区别
#include <stdio.h>
#define MAXN 1000000
char s[MAXN][MAXN];
int main()
{
char s[0][0]='r';
printf("%s\n",a[0]);
}
跟下面的怎么有区别
#include <stdio.h>
#define MAXN 1000000
int main()
{
char s[MAXN][MAXN];
char s[0][0]='r';
printf("%s\n",a[0]);
}
运行责

[解决办法]
这种字符串要碰上'\0'才算结束的. 你的字符串没有指定结束位置.打出来的结果肯定是不确定的.
[解决办法]
1000000×1000000 多大呀,放栈上???
int main()
{
char s[MAXN][MAXN];
[解决办法]

探讨

1000000×1000000 多大呀,放栈上???
int main()
{
char s[MAXN][MAXN];

[解决办法]
程序1中,s在全局区;
程序2中,s在堆栈中。
[解决办法]
char s[MAXN][MAXN];
定义位置不同,第一个叫全局变量,第二个叫局部变量,使用范围不同
[解决办法]
在占用内存空间较大的局部数组声明的前面加static将其从堆栈数据段挪到全局数据段即可。
#include <stdio.h>
#define MAXN 1000000
int main()
{
static char s[MAXN][MAXN];
char s[0][0]='r';
printf("%s\n",a[0]);
}

[解决办法]
1000000×1000000 多大呀,放栈上???
int main()
{
char s[MAXN][MAXN];
[解决办法]
先不说是不是栈太大了,你不觉得你的数组s重复定义了吗?如果是给数组元素赋值,是这么写吗?输出字母用%s?
[解决办法]
探讨
先不说是不是栈太大了,你不觉得你的数组s重复定义了吗?如果是给数组元素赋值,是这么写吗?输出字母用%s?

[解决办法]
lz 认为相同?

读书人网 >C语言

热点推荐