欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

指針(二)指針與數(shù)組、指針與函數(shù)-創(chuàng)新互聯(lián)

文章目錄
  • 一、指針與數(shù)組
    • 1. 用指針處理數(shù)組元素
    • 2. 指針數(shù)組
    • 3. 指針訪問二維數(shù)組
  • 二、指針與函數(shù)
    • 1. 指針作為函數(shù)參數(shù)
    • 2. 指針性函數(shù)
    • 3. 指向函數(shù)的指針

站在用戶的角度思考問題,與客戶深入溝通,找到鶴城網(wǎng)站設(shè)計與鶴城網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名注冊、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋鶴城地區(qū)。一、指針與數(shù)組 1. 用指針處理數(shù)組元素
  • 指針加減運算的特點使得指針特別適合存儲在一段連續(xù)內(nèi)存空間中的同類數(shù)據(jù),而數(shù)組恰好是具有一定關(guān)系的若干同類型變量的集合體。

  • 數(shù)組元素的存儲在物理上也是連續(xù)的,數(shù)組名就是數(shù)組存儲的首地址。

int arr[5];//聲明一個int型的數(shù)組
cout<<*arr;//數(shù)組名arr就是數(shù)組的的首地址
//等價于
cout<

細節(jié):

把數(shù)組作為函數(shù)的形參,等價于指向數(shù)組元素類型的指針作為形參。

void f(int p[]);
void f(int p[3]);
void f(int *p);
//這三種寫法出現(xiàn)在形參列表中都是等價的

因為一個函數(shù)要接受一個數(shù)組,它接受的是數(shù)組的首地址,而數(shù)組的首地址就是一個指針型。

拓展 :標(biāo)準(zhǔn)庫函數(shù)begin和end函數(shù)

為了讓指針的使用更簡單,更安全,C++11標(biāo)準(zhǔn)引入了兩個名為begin和end的函數(shù)

這兩個函數(shù)定義在iterator頭文件中。

begin函數(shù)返回數(shù)組a首元素的指針。

end函數(shù)返回數(shù)組a為**尾元素下一個位置**的指針。

#include#includeusing namespace std;
int main()
{int a[5]={1,2,3,4,5};
int *beg=begin(a);
int *last=end(a);
}
2. 指針數(shù)組
  • 如果一個數(shù)組的每個元素都是指針變量,這個數(shù)組就是指針數(shù)組。
  • 指針數(shù)組的每一個元素都必須是同一類型的指針。

聲明一維數(shù)組的語法形式為:

數(shù)據(jù)類型 * 數(shù)組名 [下標(biāo)表達式];

注意:

  • 下表表達式指出數(shù)組元素的個數(shù)
  • 類型名確定每個元素指針的類型
  • 數(shù)組名是指針數(shù)組的名稱,同時也是這個數(shù)組的首地址
  • 必須先賦值,后引用
int *p[3];//聲明含有三個指針指向int型的指針數(shù)組
int a=10;
p[0]=&a;
cout<<*p[0];
//等價于
cout<<**p;
//輸出結(jié)果都為:10
//p是指針數(shù)組的首地址,相當(dāng)于二級指針。

實例:利用指針數(shù)組輸出單位矩陣

#includeusing namespace std;
int main()
{int line1[]={1,0,0};
	int line2[]={0,1,0};
	int line3[]={0,0,1};
    //定義數(shù)組,三行矩陣
    
    int *pline[3]={line1,line2,line3};//定義整形指針數(shù)組并初始化
    for(int i=0;i<3;i++)       //對指針數(shù)組元素循環(huán)
    {for(int j=0;j<3;j++)   //對矩陣每一行循環(huán)
            cout<
3. 指針訪問二維數(shù)組

二維數(shù)組在內(nèi)存種是以行優(yōu)先的方式按照一維順序關(guān)系存放的,因此對于二維數(shù)組,可以將其理解為一維數(shù)組的一堆數(shù)組,數(shù)組名是它的首地址,這個數(shù)組的元素個數(shù)就是二維數(shù)組的行數(shù),每個元素指向一個一維數(shù)組。

int arr[3][3]={1,2,3,4,5,6,7,8,9};
//聲明一個二維數(shù)組

這個二維數(shù)組就是由三個一維數(shù)組構(gòu)成。

二維數(shù)組命arr代表這三個一維數(shù)組的首地址,代表a[0]的地址,為二級指針。

arr[0] 則可以看作第一個一維數(shù)組的數(shù)組命,代表這個一維數(shù)組的首地址也即 a[0][0] 的地址,為一級指針。

同理 arr[1] 則可以看作第一個一維數(shù)組的數(shù)組命,代表這個一維數(shù)組的首地址也即 a[1] [0] 的地址。

注意:指針數(shù)組與二維數(shù)組的區(qū)別

指針數(shù)組與二維數(shù)組的區(qū)別

盡管指針數(shù)組與二維數(shù)組存在本質(zhì)的差異,但二者具有相同的訪問形式,可以把二維數(shù)組當(dāng)作指針數(shù)組來訪問。

實例:

int mian()
{int arr[3][3]={{1,2,3},{4,5,6},{7,8,9}};
//依次訪問二維數(shù)組并輸出
for(int i=0;i

同理,可以對三維數(shù)組為例自行分析。

二、指針與函數(shù) 1. 指針作為函數(shù)參數(shù)

以指針作為函數(shù)參數(shù)的作用

  • 使實參與形參指針指向共同的內(nèi)存空間,以達到參數(shù)雙向傳遞的目的,即通過在被調(diào)函數(shù)中直接處理主調(diào)函數(shù)中的數(shù)據(jù)而將函數(shù)的處理結(jié)果返回其調(diào)用者。
  • 減少函數(shù)調(diào)用時數(shù)據(jù)傳遞的開銷。
  • 通過指向函數(shù)的指針傳遞函數(shù)代碼的首地址。

習(xí)慣:

如果在函數(shù)體中不需要通過指針改變指針?biāo)赶驅(qū)ο蟮膬?nèi)容,應(yīng)在參數(shù)表中將其聲明指向常量的指針,這樣使得常量對象被取地址后也可以作為該函數(shù)的參數(shù)。

const T *ptr;//T為數(shù)據(jù)類型。

實例:完成兩個數(shù)的交換(用指針作參數(shù))

void swap(int *x,int *y)//接收的是兩個地址
{int temp;
    temp=*x; 
    *x=*y;
    *y=temp;
}
int main()
{int *p1,*p2,a=100,b=10;
    p1=&a;p2=&b;   
    //完成兩個數(shù)的交換
    swap(p1,p2);//跟簡單的寫法 swap(&a,&b);
	//輸出檢查是否完成交換
    cout<
2. 指針性函數(shù)
  • 除void類型的函數(shù)外,函數(shù)在調(diào)用結(jié)束之后都要有返回值,指針也可以是函數(shù)的返回值。

  • 當(dāng)一個函數(shù)的返回值是指針類型時,這個函數(shù)就是指針型函數(shù)。

  • 使用指針型函數(shù)的最主要在函數(shù)結(jié)束時把大量的數(shù)據(jù)從被調(diào)函數(shù)返回到主調(diào)函數(shù)中。

指針型函數(shù)的一般形式:

數(shù)據(jù)類型 * 函數(shù)名 (參數(shù)表)

{ 函數(shù)體 }

//只是簡單的寫個求兩數(shù)和函數(shù),說明用法。
int*  f(int x,int y)
{int p=x+y;
    return &p;
}
int main()
{int num1,num2;
    cin>>num1>>num2;
    cout<<*f(num1,num2);//返回的f(1)為指針,
}
3. 指向函數(shù)的指針
  • 執(zhí)行程序的代碼也想數(shù)據(jù)一樣被調(diào)入內(nèi)存并占據(jù)一定的空間。
  • 每一個函數(shù)都有函數(shù)名,實際上這個函數(shù)名就表示函數(shù)的代碼在內(nèi)存的起始地址。
  • 函數(shù)指針就是專門用來存放函數(shù)代碼首地址的變量。

聲明一個函數(shù)指針時,也需要說明函數(shù)的返回值,形式參數(shù)列表,其一般語法為:

數(shù)據(jù)類型 (*函數(shù)指針名)(形參表)

函數(shù)指針在使用之前也要進行賦值,使指針指向一個已經(jīng)存在的函數(shù)代碼的起始地址。

一般語法為:

函數(shù)指針名=函數(shù)名;

注意:

  • 等號右邊的函數(shù)名所指出的必須是一個已經(jīng)聲明過的、和函數(shù)指針具有相同返回類型和相同形參表的函數(shù)
//只是簡單的寫個函數(shù),說明用法。
int f(int x)//定義一個f函數(shù)
{return x;   }
int main()
{int num;
    cin>>num;
    int (*p)(int);
    //聲明一個形參為int,返回值類型為int的函數(shù)指針
    p=f;//將函數(shù)f的起始地址賦給p
    //測試
    cout<

拓展:

由于對函數(shù)指針的定義在形式上比較復(fù)雜,如果在程序中出現(xiàn)多個這樣的定義,多次重復(fù)這樣的定義會相當(dāng)繁瑣,一個很好的解決方法是使用 typedef 。

typedef int (*function)(double);
//聲明“function為一個double形參,返回值類型int的函數(shù)的指針”類型的別名。
//使用。
function f;
//f就是該類型為function的函數(shù)指針。

關(guān)于 typedef 的用法以后我會專門做一期來講。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

標(biāo)題名稱:指針(二)指針與數(shù)組、指針與函數(shù)-創(chuàng)新互聯(lián)
當(dāng)前網(wǎng)址:http://aaarwkj.com/article44/gjgee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站網(wǎng)頁設(shè)計公司、品牌網(wǎng)站制作、做網(wǎng)站、自適應(yīng)網(wǎng)站電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

av熟女乱一区二区三区| 日本高清免费黄色录像| 下载一个日韩暴力黄色录像| 国产麻豆剧传媒国产av| 在线高清中文字幕三区| 国产片中文字幕在线观看| 久久这里只有精品蜜桃| 亚洲黄色一区大陆av剧情| 亚洲国产精品性色av| 日韩综合欧美激情另类| 双高干文男女主都很强| 在线激情视频一区二区| 久久精品国产亚洲av清纯 | 日韩在线一区二区视频观看| 国产成人综合亚洲国产| 欧美精品一区二区三区狠狠| 国产一区国产二区中文字幕| 久久se精品一区精品二区国产| 午夜在线观看视频免费| 国产欧美日韩亚洲综合在线| 亚洲精品国产中文字幕| 最近更新中文字幕不卡在线| 蜜臀视频一区二区在线播放| 黄色片一区二区三区四区| 亚洲香蕉视频免费在线观看| 亚洲一区二区天堂av| 顶级少妇做爰片高潮丸| 在线观看不卡的黄色地址 | 欧美夫妻香蕉视频网站| 亚洲激情精品成人在线| 中文字幕五月久久婷热| 欧美性大片免费在线观看| 欧美日本精品在线观看| 国产一区国产二区中文字幕| 欧美日韩性视频播放器| 免费黄色一区二区三区| 岛国av有码高清在线观看| 日韩精品中文女同在线播放| 国产av人妻精品一区二| 日本免费一区二区三个| 人妻黄色这里只有精品|