c語言指針
因為參加了軟考初級程序員,所以來復習c語言。學習c語言指針。
大一學的時候,指針根本不太理解?,F(xiàn)在學的時候發(fā)現(xiàn)其實也很易懂。
1.指針是用來存放內(nèi)存地址的變量。
? int *p;? ? // *只是一個聲明符,說明他是指針 (剛開始的時候,我一直把這個搞混)
例子:? int *p,a;
?p=&a;
//p用來存放a的地址
2.指針和數(shù)組
? ? 1)指針和一維數(shù)組
int *p,a[20];
p=a;
或者是p=&a[0]
而不是p=&a;
因為數(shù)組名就是首地址.
?2)指針和二維數(shù)組
int a[4][5] = {2,3,4,5,6,7,8,9};
int *p[5];
p=a;
我在寫一個程序上遇到一個更迷惑的事,我不懂t[i]=s[i][0]是什么情況!

3.字符串和字符指針
char sa[]="hello";
如果要改變數(shù)組sa所表示的字符串,只能改變數(shù)組元素的內(nèi)容。
char *sp="hello";
如果要改變字符指針sp所代表的字符串,通常直接改變指針的值,讓它指向新的字符串。
4.常用的字符串處理函數(shù)
? 1)scanf 只能輸入不帶空格的字符串,遇到空格則會結束
? 2)gets遇到回車則會結束
? 3)printf和puts的區(qū)別在于后者輸出字符串之后會自動換行。
? 4)字符串復制函數(shù) char *strcpy(char *s1,char *s2)
該函數(shù)是把字符串s2復制到s1,直到遇到s2中的'\0'為止。
參數(shù)s1必須是字符型數(shù)組基地址,參數(shù)s2可以是字符數(shù)組名或者字符串常量
?5) 字符串連接函數(shù)strcat(s1,s2)
該函數(shù)將字符串s2接到字符串s1的后面。
參數(shù)s1必須是字符數(shù)組基地址,參數(shù)s2可以是字符數(shù)組名或字符串常量。
6)字符串比較函數(shù)strcmp(s1,s2)
該函數(shù)返回一個整數(shù),給出字符串s1和s2的比較結果
? ?1)若s1和s2相等,返回0
? ?2)若s1大于s2,返回一個正數(shù)
? ?3)若s1小于s2,則返回一個負數(shù)
參數(shù)s1和s2可以是字符數(shù)組名或字符串常量
7)字符串長度函數(shù)strlen(s1)
該函數(shù)返回字符串有效字符的個數(shù)(不包括字符結束符'\0')
參數(shù)s1可以是字符數(shù)組名或字符串常量