C語言安全編碼數(shù)組記法的一致性
更新時間:2014年07月07日 14:36:37 投稿:shichen2014
這篇文章主要介紹了C語言安全編碼數(shù)組記法的一致性,需要的朋友可以參考下
對C語言程序來說,在同一文件中時,void func(char *a); 和 void func(char a[]); 完全等價
但在函數(shù)原型之外,如果一個數(shù)組在一個文件中聲明為指針,在另一個不同的文件中聲明為數(shù)組,那么它們是不等價的
示例代碼如下:
//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;
}
相關(guān)文章
SublimeText編譯C開發(fā)環(huán)境設(shè)置
這篇文章主要介紹了使用SublimeText編譯C代碼的開發(fā)環(huán)境設(shè)置,大家參考使用2013-11-11
NDK 數(shù)據(jù)結(jié)構(gòu)之隊列與棧等的實現(xiàn)
這篇文章主要介紹了NDK 數(shù)據(jù)結(jié)構(gòu)之隊列與棧等的實現(xiàn)的相關(guān)資料,希望通過本文大家能理解掌握這部分內(nèi)容,需要的朋友可以參考下2017-10-10
C++調(diào)用C函數(shù)報錯無法解析的外部命令/無法解析的外部符號問題
這篇文章主要介紹了C++調(diào)用C函數(shù)報錯無法解析的外部命令/無法解析的外部符號問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08

