C語言安全編碼數組記法的一致性
更新時間:2014年07月07日 14:36:37 投稿:shichen2014
這篇文章主要介紹了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;
}
相關文章
MinGW-w64 C/C++編譯器下載和安裝的方法步驟(入門教程)
如果電腦沒有安裝MinGW-w64 C/C++編譯器,就無法運行gcc命令,本文主要介紹了MinGW-w64 C/C++編譯器下載和安裝的方法步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02

