今天主要學習是關於指標的。
*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始終指向同乙個儲存位址,指向的是乙個字串常量,試圖修改字串內容,結果是沒有定義的,但是可以修改指向其他位址。
接著是乙個字串複製的例子,**如下:
1void 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函式的修改,**如下:
1int 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...