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;
}