C說話平安編碼數組記法的分歧性。本站提示廣大學習愛好者:(C說話平安編碼數組記法的分歧性)文章只能為提供參考,不一定能成為您想要的結果。以下是C說話平安編碼數組記法的分歧性正文
對C說話法式來講,在統一文件中時,void func(char *a); 和 void func(char a[]); 完整等價
但在函數原型以外,假如一個數組在一個文件中聲明為指針,在另外一個分歧的文件中聲明為數組,那末它們是不等價的
示例代碼以下:
//main.c #include<stdlib.h> enum {ARRAYSIZE = 100}; char *a; void insert_a(void); int main(void) { a = (char*)malloc(ARRAYSIZE); if(a == NULL) { //處置分派毛病 } insert_a(); return 0; } //insert_a.c char a[]; void insert_a(void) { a[0] = 'a'; }
處理計劃以下:
//insert_a.h enum {ARRAYSIZE = 100}; extern char *a; void insert_a(void); //insert_a.c #include "insert_a.h" char *a; void insert_a(void) { a[0] = 'a'; } //main.c #include<stdlib.h> #include"insert_a.h" int main(void){ a = (char*)malloc(ARRAYSIZE); if(a == NULL) { //處置分派毛病 } insert_a(); return 0; }