如题所述
æ两ç§æ¹æ³å¯ä»¥åå°ã
ä¸ã循ç¯èµå¼ã
对æ¯ä¸é¡¹åå«èµå¼ä¸º0ã对äºäºç»´æ°ç»ä¸è¬ç¨åé循ç¯ï¼å®é ä¸ç¨åé循ç¯ä¹å¯ä»¥ï¼æçä¸å¹¶æ åºå«ã
åè代ç ï¼
TYPE a[100][100];int i,j;
for(i = 0; i < 100; i ++)
for(j = 0; j < 100; j ++)//åé循ç¯éåã
a[i][j] = 0; //æ¯ä¸ªèµå¼ä¸º0ã
äºãæ´ä½ç½®é¶ã
å¨Cåºå½æ°ä¸ï¼æmemsetè¿ä¸ä¸ªå½æ°ï¼å½¢å¼ä¸º
/* Set N bytes of S to C. */
void *memset (void *s, int c, size_t n);
åè½ä¸ºï¼å¨å°åsæåçå ååå å¼å§ï¼å°c个åèç空é´ï¼æ¯ä¸ªé½èµå¼ä¸ºcã
è¿ä¸ªå½æ°æ¯æåèèµå¼çï¼æ以对äºèµå¼0å¼ï¼å¯ä»¥ç´æ¥å°æ´ä¸ªå å空é´æ¸ é¶ã
åè代ç ï¼
TYPE a[100][100];memset(a, 0, sizeof(a));//æ´ä½æ¸ 0.
第ä¸ç§æ¹æ³æ´å ·éç¨æ§ï¼åä¸ç§æ¹æ³ä¸æ¯æ°¸è¿éåï¼ä½å¨å¯ä»¥ç¨memsetçæ åµä¸ï¼åä¸ç§æ¹æ³æ´é«æã
一、循环赋值。
对每一项分别赋值为0。对于二维数组一般用双重循环,实际上用单重循环也可以,效率上并无区别。
参考代码:
TYPE a[100][100];
int i,j;
for(i = 0; i < 100; i ++)
for(j = 0; j < 100; j ++)//双重循环遍历。
a[i][j] = 0; //每个赋值为0。
二、整体置零。
在C库函数中,有memset这一个函数,形式为
/*
Set
N
bytes
of
S
to
C.
*/
void
*memset
(void
*s,
int
c,
size_t
n);
功能为,在地址s指向的内存单元开始,将c个字节的空间,每个都赋值为c。
这个函数是按字节赋值的,所以对于赋值0值,可以直接将整个内存空间清零。
参考代码:
TYPE a[100][100];
memset(a, 0, sizeof(a));//整体清0.
第一种方法更具通用性,后一种方法不是永远适合,但在可以用memset的情况下,后一种方法更高效。
int a[100][100]={0};
那么a的所有元素都被赋了0值。
也可以
int i,j;
for(i=0;i<100;i++)
for(j=0;j<100;j++)
a[i][j]=0;
就行了本回答被提问者采纳
memset(a, 0, 100 * 100 * sizeof(int)); /* 将数组的每个元素设置为 0 */
靠!这种问题也问
我练一下指法算啦