C和指標 五

2021-06-26 11:53:43 字數 1622 閱讀 2087

1.   int array[10]

int *ap=array+2;

ap[0]: 對等表示式 array[2] , * (ap +(0)) 

ap[-1]:使用偏移量-1 得到它的前乙個元素,也就是array[1]

2. 2[array]  ==  *(2+ (array)) == *(array+2)

int array[10] ,a ;

for(a=0;a<10;a++)

;//可以做如下的優化

int array[10],*ap;

for(ap=array;ap

4. 當你根據某個固定數目的增量在乙個陣列中移動時,使用指標變數將比使用下標產生效率更高的**。

5. 儲存於靜態記憶體的陣列只初始化一次,也就是在程式之前初始化。

6.char message1="hello"; //字串陣列

char *message2=「hello」;//字串常量

7. 在二維陣列中逐個訪問

int *pi= &matrix[0][0];

int *pi=matrix[0];

8. 單目操作符 & 返回乙個指向陣列的指標,而不是乙個指向陣列第乙個元素的指標的指標。

9. 記憶體操作

#includevoid *memcpy(void *dst , void const * src, size_t length);

void *memmove(void *dst , void const * src, size_t length);

void *memcmp(void *dst , void const * src, size_t length);

void *memchr(void *dst ,int ch, size_t length);

void *memset(void *dst , int ch, size_t length);

memmove跟memcpy差不多,只是它的源和目標運算元可以重疊。

memcmp對兩端記憶體的內容進行比較,比較length個位元組,這些值按照無符號字元逐字節進行比較。

memchr 從dst的起始位置開始查詢字元ch第一次出現的位置。並返回乙個指向該位的指標。

memset 函式把從a開始的length個位元組都設值。

10. 

void *malloc(size_t size);

void free(void * pointer);

malloc 的引數就是需要分配的記憶體位元組數。如果成功分配,返回乙個指向被分配的記憶體塊起始位置的指標,不成功返回null 指標。

向free傳遞乙個null 引數不會產生任何效果。

11.標準表示 乙個void *型別的指標可以轉換為其他任何型別的指標。

12.

void *calloc(size_t num_elements, size_t size_element);

void * relloc(void * ptr , size_t new_size);

calloc主要實在malloc的基礎上初始化位址為0

relloc函式用於修改乙個原先已經分配的記憶體塊大小

C指標詳解五

2 檔案的讀寫函式 2 字串輸入輸出 3 檔案讀寫操作的內部機制 4 順序讀寫操作 5 隨機讀寫操作 file fp fopen函式用來開啟檔案,其在stdio.h中,一般呼叫形式為 file fp fp fopen 檔名 使用檔案的方式 其中開啟檔案的方式有如下幾種 例如用只寫的方式開啟檔案1.t...

C和指標 第五章 習題

下列輸出的值 include int func int main answer 2 3 4 所以結果 10 5.3 編寫函式 unsigned int reverse bits unsigned int value 將二進位制模式從左到右變換,輸入25輸出2 550 136 832 include ...

C和指標指標

變數的值就是分配給該變數的記憶體位置所儲存的數值。int a 112 int d a 指標d指向a,但是變數d表示變數a的位址,d表示a的內容。的優先順序高於 cp 設計3個步驟 1 操作符產生cp的乙份拷貝 2 操作符增加cp的值 3 在cp的拷貝上執行間接訪問操作 char ch a char ...