1.對指針概念的理解
我們提供的服務有:成都網站設計、成都做網站、微信公眾號開發、網站優化、網站認證、巴楚ssl等。為千余家企事業單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的巴楚網站制作公司? 1.1 指針本身可以看成一個變量,于是變量類型現在有:整型變量 a;浮點型變量float b;指針型變量 *c.
指針的表示中,類型名 *指針 變量名,eg: int *a; char *p;
這個指針變量存儲的是一個地址,因此*p 可以將其存儲的地址上的東西表示出來;逆運算是取地址,將一個東西的地址算出來給指針p,這就是賦初值的過程。因為p手上拿著目標的地址,形象地看就像牽著遛狗的繩子,所以叫它指針。(本身沒有什么特別的)
1.2 指針在定義的時候最好要賦初值,且特殊點在于,是將目標變量的地址賦給它,像下面這樣。
int a = 5;
char *p = &a;
此時正在定義階段,所以*表示的不是地址的內容,而表示p是一個指針變量,規范性要求。
? 1.3 指針之間交換地址,例如char *p; char*q;直接p = q;即可
2. 指針與數組的關系
? 2.1 可否這樣理解:一個數組的首地址就是指針。在賦值的時候,可以不需要*,像同類一樣,數組ch直接將它的頭部交給指針變量s,往后假如想要訪問第2個字母,可以ch[1],也可以s[1],也可以*(s+1)。當然也有不同,ch是數組,所占的空間是一段連續的;而指針s只占一個類型的空間。
char *s;
char ch[15]={"adskja saha"};
cin.getline(ch,15);
s = ch;
? 2.2 在函數中傳遞的形式
如果是數組的話,它的傳遞的格式大概像下面這樣:
void hanshu(int arr[]);
int main()
{
int array[]= {0,1,2,3};
hanshu(array);
}
形參帶個[ ],實際參數就是數組的名字;
類比下來,指針的傳遞格式可以是這樣的:
void hanshu(char *p)
int main()
{
char *p;
int a;
hanshu(&a);
hanshu(p);
}
形參定義一個指針,然后實際參數就是一個地址。
3.指針和字符串
? 字符串可以有兩種表示:字符數組和字符指針,和前面數組似乎是一個回事。需要注意的是,字符串作為參數傳遞只需傳遞首字母,因為結束有'\0'作為標記。、
PS:若定義了指針變量s,并且把它和一個字符串的首地址掛鉤,對字符串的每個字母的訪問可以*s,然后下一個就直接s++,到*s==0的時候結束。
例子:統計一個字符串中單詞的個數。
函數部分:
//函數部分
int counnt(char *s)
{
int cnt = 0;
while(*s!='\0')
{
while(*s==' ') s++;
if(*s!='\0')
{
cnt++;
while(*s!=' '&&*s!='\0')
s++;
}
}
return cnt;
}
//函數:用字符指針傳遞首地址;
// 向下掃描,while(*s不是'\0')
// 當遇到空格,++s,空轉不計數;
// 如果空格后面不是'\0',則遇到了字母;
// 當遇到字母,空轉結束,cnt++;
// 當仍然有字母,且不是'\0',空轉不計數。
// 如果遇到空格,空轉結束,進入下一個循環;
//
定義和調用部分:
char *s;
char ch[15];;
cin.getline(ch,15);
s = ch;
cout<
結果:
你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧
本文名稱:C++指針學習第一天-創新互聯
本文來源:http://vcdvsql.cn/article40/didsho.html
成都網站建設公司_創新互聯,為您提供網站收錄、網站營銷、網站設計、網站維護、App開發、動態網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯