為了實現鏈式操作,將目的位址返回;對源位址和目的位址加非0斷言;將源字串加const,表明其為輸入引數。
char * strcpy( char *strdest, const char *strsrc )
呵呵,好習慣要學習呀。
void getmemory( char *p )
void test( void )
getmemory( char *p )函式的形參為字串指標,在函式內部修改形參並不能真正的改變傳入形參的值,執行完後的str仍然為null;
void getmemory( char **p, int num )
void test( void )
避免了上面的問題,傳入getmemory的引數為字串指標的指標
呵呵,這就使函式形參採用雙重指標的原因!!
記得str = null呀,防止野指標出現。
swap( int* p1,int* p2 )
這樣寫很不好,會「access violation」。指標不應當宣告後,直接取內容賦值,而應當先把已有量的位址賦給指標。
分別給出bool,int,float,指標變數 與「零值」比較的 if 語句
bool型變數:if(!var)
int型變數: if(var==0)
float型變數:const float epsinon = 0.00001;
if ((x >= - epsinon) && (x <= epsinon)
指標變數: if(var==null)
陣列名可以轉換為指向其指代實體的指標,而且是乙個指標常量,不能作自增、自減等操作,不能被修改;陣列名作為函式形參時,淪為普通指標。
char str[10];
str++; //編譯出錯,提示str不是左值
為什麼標準標頭檔案都有類似以下的結構?
#ifndef __incvxworksh
#define __incvxworksh
#ifdef __cplusplus
extern "c"
#endif
#endif /* __incvxworksh */
解答:標頭檔案中的編譯巨集
#ifndef __incvxworksh
#define __incvxworksh
#endif
的作用是防止被重複引用。
作為一種物件導向的語言,c++支援函式過載,而過程式語言c則不支援。函式被c++編譯後在symbol庫中的名字與c語言的不同。例如,假設某個函式的原型為:
void foo(int x, int y);
該函式被c編譯器編譯後在symbol庫中的名字為_foo,而c++編譯器則會產生像_foo_int_int之類的名字。_foo_int_int這樣的名字包含了函式名和函式引數數量及型別資訊,c++就是考這種機制來實現函式過載的。
為了實現c和c++的混合程式設計,c++提供了c連線交換指定符號extern "c"來解決名字匹配問題,函式宣告前加上extern "c"後,則編譯器就會按照c語言的方式將該函式編譯為_foo,這樣c語言中就可以呼叫c++的函式了。(聯想起幾天前的鏈結錯誤高的焦頭爛額,原來就是沒有加extern 「c」)
strcpy ( 目的指標,資料指標 ); memcpy( 目的指標,資料指標 ,steps );
《C語言點滴》一1 5 內功修煉
c語言點滴 作為乙個門外漢,我真的不敢在這裡談論數學的話題。直到我在網上看到南京大學數學系張高飛老師的一篇文章,我決定將全文轉述在下面,下面分割線之間的就是張高飛老師那篇文章了。文章不長,但是讓我這個悲情人物找到了自信,數學裡面是有屬於我的乙個分支的,那就是計算數學!正如大家所知,代數幾何是現代數學...
C語言內力修煉與軟體工程
雖然如今很多人,特別是軟體工程理解的比較好但是還沒有達到滿瓶子的那些人,他們很鄙視使用c語言重新來做,他們十分推崇c 等oo語言,認為可用的庫比較多,從而可以使開發效率更高,可以使 可讀性更強,可以使 維護成本更低,他們認為你使用c語言來實現乙個c 庫里的功能是在炫技巧,是學院派行為 然而這種說法是...
C語言內力修煉與軟體工程
雖然如今很多人,特別是軟體工程理解的比較好但是還沒有達到滿瓶子的那些人,他們很鄙視使用c語言重新來做,他們十分推崇c 等oo語言,認為可用的庫比較多,從而可以使開發效率更高,可以使 可讀性更強,可以使 維護成本更低,他們認為你使用c語言來實現乙個c 庫里的功能是在炫技巧,是學院派行為 然而這種說法是...