strlen(p): 能計算出p指向字元串的長度(以當前p的位置開始),不包含終止字元'\0'; p可以聲明為char* p或者char p[],這兩種形式strlen均能正確計算。 sizeof(p): sizeof是一個操作符,非函數,其值在編譯期確定,因此當p聲明為某一類型指針時,sizeof ...
strlen(p):
- 能計算出p指向字元串的長度(以當前p的位置開始),不包含終止字元'\0';
- p可以聲明為char* p或者char p[],這兩種形式strlen均能正確計算。
sizeof(p):
- sizeof是一個操作符,非函數,其值在編譯期確定,因此當p聲明為某一類型指針時,sizeof在編譯時並不能確定指向內容的大小,故返回的是指針類型本身的大小;
當p聲明為某一類型數組時,sizeof在編譯時即可確定指向內容的大小,故返回的是數組所占容量;
strcat(p1,p2)和strcpy(p1,p2)
相同點:
- p1必須為內容可改變的指針,如char p1[]
- 當p1當前指向的字元為終止字元('\0')時,直接用p2內容連接或覆蓋在p1當前位置及其後
不同點:
- 當p1當前指向的字元不是終止字元('\0')時,strcat會自動將p2的內容連接在終止字元所在位置及其後;strcpy則直接用p2內容覆蓋p1當前指向的內容。