为什么int型的数组用memset不能清零(memset的使用规范)
生活随笔
收集整理的這篇文章主要介紹了
为什么int型的数组用memset不能清零(memset的使用规范)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問題:為什么這樣用memset不能清零
#include<stdio.h>
#include<string.h>
int main()
{
???int i,a[100];
???memset(a,0,100);//改memset(a,0,sizeof(a));或memset(a,0,100*sizeof(int));就可以了
???for(i=0;i<100;i++)
?????? printf("%d ",a[i]);
???return 0;
#include<string.h>
int main()
{
???int i,a[100];
???memset(a,0,100);//改memset(a,0,sizeof(a));或memset(a,0,100*sizeof(int));就可以了
???for(i=0;i<100;i++)
?????? printf("%d ",a[i]);
???return 0;
}
解決:memset(a,0,100);//改memset(a,0,sizeof(a));或memset(a,0,100*sizeof(int));就可以了
原因:void *memset(void *s, int ch, unsigned n)函數的作用:將s所指向的某一塊內存中的每個字節(注意這里是每個字節,你可能用字符串習慣了)的內容全部設置為ch指定的ASCII值,memset 工具 塊的大小由第三個參數指定,這個函數通常為新申請的內存做初始化工作, 其返回值為指向S的指針。?
原本定義的是整型, 占一個字節?
memset(a,0,100*sizeof(int)) 這樣是100個4個字節的內存
總結
以上是生活随笔為你收集整理的为什么int型的数组用memset不能清零(memset的使用规范)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言’内存清除函数,c语言常用内存处理
- 下一篇: linux 快照