7.關於區域性變數
區域性變數是在棧上分配的空間,只在函式內部有效,退出函式,空間就釋放了,看一下一下幾個例子
1)void* dlmu_malloc()
char buf[100];
return (void*)buf;
2)void*dlmu_malloc()
char *p;
char buf[100];
p = buf;
return (void*)p;
這兩個例子都是分配不到空間的,因為buf是區域性變數,隨著函式退出(拋棧),空間就釋放了。
3)void *dlmu_malloc(unsingned long size)
char *p;
p = malloc(size);
return p;
這是可以分配到空間的,因為malloc是在堆上分配的,要自己管理。
8.函式引數的傳值和傳址,看乙個例子
char dlmu_malloc(unsigned long size,char *buf)
buf = malloc(size);
return 1;
注意函式呼叫過後,這個buf的值是不會改變的,如果傳入時buf的值是null,則傳出時buf也是null,這是因為buf雖然是個指標,但是這裡還是乙個傳值操作,如果要完成傳址,應該這樣
char dlmu_malloc(unsigned long size,char **buf)
* buf = malloc(size);
if(*buf ==null) return 0;
return 1;
這才是傳址
嵌入式開發中的一些細節
從事開發一年多,發現到一些小細節,會影響到自己開發的效率,特總結如下,以免犯錯 1.標準c中str系列的函式中,0 有特殊的含義 字串結束 所以如果要操作具有0x00 有實際意義 的字串,不應該用該系列的函式。例 有字串 0nocookie 0nocache 0 本義是想用 0 來表示分隔符,分隔出...
嵌入式開發中的一些細節(dlmu2001
從事開發一年多,發現到一些小細節,會影響到自己開發的效率,特總結如下,以免犯錯 1.標準c中str系列的函式中,0 有特殊的含義 字串結束 所以如果要操作具有0x00 有實際意義 的字串,不應該用該系列的函式。例 有字串 0nocookie 0nocache 0 本義是想用 0 來表示分隔符,分隔出...
Linux嵌入式開發的一些總結
宋立新email zjujoe yahoo.com 做了幾年 linux 底層嵌入式開發,有一些心得,這裡記錄下來,作為進一步學習 linux 之前的乙個總結。daily build nokia microsoft 等,都採用了該機制。是終端產品開發中乙個 best practise.其好處有 構建...