C語言安全編碼數(shù)組記法的一致性
對(duì)C語言程序來說,在同一文件中時(shí),void func(char *a); 和 void func(char a[]); 完全等價(jià)
但在函數(shù)原型之外,如果一個(gè)數(shù)組在一個(gè)文件中聲明為指針,在另一個(gè)不同的文件中聲明為數(shù)組,那么它們是不等價(jià)的
示例代碼如下:
//main.c #include<stdlib.h> enum {ARRAYSIZE = 100}; char *a; void insert_a(void); int main(void) { a = (char*)malloc(ARRAYSIZE); if(a == NULL) { //處理分配錯(cuò)誤 } 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) { //處理分配錯(cuò)誤 } insert_a(); return 0; }
相關(guān)文章
SublimeText編譯C開發(fā)環(huán)境設(shè)置
這篇文章主要介紹了使用SublimeText編譯C代碼的開發(fā)環(huán)境設(shè)置,大家參考使用2013-11-11NDK 數(shù)據(jù)結(jié)構(gòu)之隊(duì)列與棧等的實(shí)現(xiàn)
這篇文章主要介紹了NDK 數(shù)據(jù)結(jié)構(gòu)之隊(duì)列與棧等的實(shí)現(xiàn)的相關(guān)資料,希望通過本文大家能理解掌握這部分內(nèi)容,需要的朋友可以參考下2017-10-10C語言高級(jí)教程之變長(zhǎng)數(shù)組詳解
這篇文章主要介紹了C語言中變長(zhǎng)數(shù)組的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02C++調(diào)用C函數(shù)報(bào)錯(cuò)無法解析的外部命令/無法解析的外部符號(hào)問題
這篇文章主要介紹了C++調(diào)用C函數(shù)報(bào)錯(cuò)無法解析的外部命令/無法解析的外部符號(hào)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08C語言中回調(diào)函數(shù)的含義與使用場(chǎng)景詳解
這篇文章主要為大家詳細(xì)介紹了C語言中回調(diào)函數(shù)的含義與使用場(chǎng)景,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03