c c 學習筆記 7

2022-02-22 02:43:26 字數 1095 閱讀 8809

今天主要學習是關於指標的。

*p = *p + 10 or *p += 10

表示*p的值增加10,但是在是用如:

(*p)++

時要注意,如果沒有括號,則是對p進行加1運算,而不是對p指向的物件進行加1運算。

宣告:int a[10];

int *p;

p = &a[0];

對於陣列元素a[i]的引用可以寫成*(a+i),c語言在計算陣列元素a[i]時,實際上是先將其轉換為*(a+i)的形式,因此在程式中,a[i]與*(a+i)是等價的。

如果p是乙個指向陣列中某個元素的指標,那麼p++將對p進行自增運算並指向下乙個元素,那麼p+=i將對p進行加i的增量運算,使p指向第i個元素。

因此我們可以改寫strlen函式(用於計算字串長度的函式):

int strlen(char *s)

return p -s;

}

如下定義是有很大差別的:

char s = "abc";

char *p = "abc";

s是乙個僅僅足以存放初始化字串以及空字元的一維陣列,陣列中的單個字元可以進行修改;但是s始終指向同乙個儲存位址,指向的是乙個字串常量,試圖修改字串內容,結果是沒有定義的,但是可以修改指向其他位址。

接著是乙個字串複製的例子,**如下:

1

void strcpy(char *s, char *t)

29 }

以上是乙個比較簡單的寫法,但是其實有經驗的程式設計師不這麼寫,以下2種方式比較好:  

1

//版本1

2void strcpy(char *s, char *t)38

}910//

版本2(掌握、推薦)

11void strcpy(char *s, char *t)

1217 }

因此我們可以推導出對於strlen函式的修改,**如下:

1

int strlen(char*s)28

return

len;

9 }

今天就學到這裡了,明天繼續,加油!

C C 學習筆記 基礎知識7

1字元和字串 在 c 語言中字元用它們的字符集值對應的小整數表示。因此,你不需要任何轉換函式 如有你有字元,你就有它的值。數字字元和它們對應的 0 9 的數字之間相互轉換時,加上或減去常數 0 也就是說,0 的字元值。字串用字元陣列表示 通常你操作的是字元陣列的第乙個字元的指標,c語言從來不會把陣列...

C C學習筆記

1.儲存型別 標準c語言為變數 常量 函式定義了4種儲存型別 extern,auto,static,register,它們分別用乙個關鍵字 儲存型別說明符 來說明。這4種儲存型別可分為兩種生存期限 永久的 即整個程式執行期間都存在 extern和static 和臨時的 即暫時儲存在堆疊和暫存器中 a...

C,C 學習筆記

1.求a的n次方 標頭檔案pow a,n a,n都為double 2.關於指標的一些小測試 includeusing namespace std int main int a 8 int m 3 cout 3.sort位於 algorithm 中,sort p,p n 預設公升序排列。4.inclu...