C语言中,如果我要将一个二维数组的所有元素全部初始化为1,我可以这样做吗?

来源:百度知道 编辑:UC知道 时间:2024/05/29 00:57:36
int ss[m][n]={1};如果这样不对,那我应该怎么做简单而且正确呢?不可能非要把所有的数都写一遍吧。万一有10000个元素怎么办?谢谢

可以用一个双重循环呀
int i,j;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
ss[i][j]=1;

先像楼上说得一样循环出一个数组C[][]所有元素为1
以后如果要用到初始ss为1的话
直接memcpy(ss, C, sizeof(C));直接拷贝内存,很快
示例:
#include<iostream>
int main()
{
int c[100][100];
int ss[100][100];
for(int i = 0; i < 100; i++)
{
for(int j = 0; j < 100; j++)
{
c[i][j] = 1;
}
}
memcpy(ss, c, sizeof(c));
return 0;
}
这样只需要循环一次生成所有元素为1的数组
而以后使用memcpy,速度相当快

int ss[100][200];
int i,j;
for(i=0;i<100;i++}
for(j=0;j<200;j++)
{
ss[i][j]=1;
}

使用双重for循环赋值,memset不可以

用双重循环

这样当然不对。这样的结果是只有SS[0][0]被附值为1。其他全是0。
想为数组附值酒药用循环做。比如SS[m][n]
int i,j;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
ss[i][j]=1; 这样就给所有元素附值为1了;