2. 使用memset函數
2.1 memset函數詳解
- 2.1.1 函數原型:
void *memset(void *str,int nur,size_t n);
- 2.1.2 所在頭文件:string.h 或 memory.h
- 2.1.3 作用:將str中前n個字節替換為nur並返回str
- 2.1.4 優點:是對較大的結構體或數組進行清零操作的一種最快方法
- 2.1.4 注意事項:由於nur是int類型的,需要注意以下兩點:
-
2.1.4.1 若str指向的地址是char類型的,nur的值可以是任意字符值;
-
2.1.4.2 若s指向的地址不是char類型,nur的值只能是-1或者0。
-
原因:因為-1和0轉化成二進制后每一位都是一樣的,設int型占4個字節,則-1=0XFFFFFFFF, 0=0X00000000。
-
2.2 實例
memset( str,0,sizeof(str) );
將上面的studentPointer指向的動態申請的內存初始化
memset( studentPointer,0,sizeof(struct student) );
運行結果
3. 使用calloc函數
3.1 函數詳解
- 函數原型:
void* calloc(unsigned int num,unsigned int size)
- 所在頭文件:
stdlib.h
- 動態申請內存函數之一,相當於用malloc函數申請並且初始化一樣,calloc函數會將申請的內存全部初始化為0;
- 因此,可以直接用calloc函數,不用malloc函數,兩者的區別就是一個會將申請的內存初始化,一個不會,大家按自己的需要來使用。
3.2 實例
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct node {
char name[10];
int number;
struct node *next;
};
void main() {
struct node *Herd;
Herd = (struct node *)calloc(1, sizeof(struct node));
system("pause");
}
運行結果
本人撰寫博客純粹為記錄自己在學習過程的遇到的困難、問題的解決辦法。如有錯誤,請大家不吝指教!謝謝!