VC上编的,为什么有区别,该怎么解决
VC上编的,为什么有区别#include stdio.h#define MAXN 1000000char s[MAXN][MAXN]int main(){char s[0][
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];
[解决办法]
[解决办法]程序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?
[解决办法][解决办法]lz 认为相同?