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 ...