C語言筆記

實用的指針用法數組

能夠用指針作下面四個最基本的操做:
一、向OS申請一塊內存,而且用指針處理它。這包括字符串,和一些你歷來沒見
過的東西,好比結構體。
二、經過指針向函數傳遞大塊的內存(好比很大的結構體),這樣沒必要把所有數據
都傳遞進去。
三、獲取函數的地址用於動態調用。
四、對一塊內存作複雜的搜索,好比,轉換網絡套接字中的字節,或者解析文件。網絡

對於其餘情況,應當儘量使用數組,而將指針做為加速程序和優化的手段,緣由在於現在訪問數組或指針的語法都會翻譯為相同的機器碼,並且表現一致。函數

==========================================================================指針

sizeof() 函數記錄的是所讀取變量或數組結構體等所佔內存的大小,當讀取數組時,會將‘\0’計入長度;對象

strlen所做的僅僅是一個計數器的工做,它從內存的某個位置(能夠是字符串開頭,中間某個位置,甚至是某個不肯定的內存區域)開始掃描,直到碰到第一個字符串結束符'\0'爲止,而後返回計數器值(長度不包含'\0')。內存

strlen(char*)函數求的是字符串的實際長度,它求得方法是從開始到遇到第一個'\0',若是你只定義沒有給它賦初值,這個結果是不定的,它會從aa首地址一直找下去,直到遇到'\0'中止。字符串

⒈sizeof操做符的結果類型是 size_t,它在頭文件中typedef爲unsigned int類型。
該類型保證能容納實現所創建的最大對象的字節大小。
⒉sizeof是取字節運算符(關鍵字),strlen是函數。
⒊sizeof能夠用類型作參數,strlen只能用char*作參數,且必須是以'\0'結尾的。
⒋數組作sizeof的參數不退化,傳遞給strlen就退化爲 指針了。
⒌大部分編譯程序 在編譯的時候就把sizeof計算過了是類型或是變量的長度。這就是sizeof(x)能夠用來定義數組維數的緣由.
6.strlen的結果要在運行的時候才能計算出來,是用來計算字符串的長度,不是類型佔內存的大小。
7.sizeof後若是是類型必須加括弧,若是是變量名能夠不加括弧。這是由於sizeof是個操做符不是個函數。
⒏當適用了於一個結構類型時或變量, sizeof 返回實際的大小,
當適用一靜態地空間數組, sizeof 歸還所有數組的尺寸。
sizeof 操做符不能返回動態地被分派了的數組或外部的數組的尺寸
⒐數組做爲參數傳給函數時傳的是指針而不是數組,傳遞的是數組的首地址,
相關文章
相關標籤/搜索