• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      辨析指針數(shù)組與數(shù)組指針

      2017-04-12 00:35:18張小軍
      關(guān)鍵詞:運(yùn)算符數(shù)據(jù)類(lèi)型數(shù)組

      張小軍, 張 晶

      (河南教育學(xué)院 信息技術(shù)系,河南 鄭州 450046)

      辨析指針數(shù)組與數(shù)組指針

      張小軍, 張 晶

      (河南教育學(xué)院 信息技術(shù)系,河南 鄭州 450046)

      在C語(yǔ)言代碼的編寫(xiě)過(guò)程中,指針數(shù)組與數(shù)組指針是經(jīng)常用到的數(shù)據(jù)類(lèi)型,其形式相近而意義迥然.正確理解這兩個(gè)概念是使用C語(yǔ)言寫(xiě)好代碼的前提.通過(guò)實(shí)例比較,闡述指針數(shù)組與數(shù)組指針的差異.

      指針;指針數(shù)組;數(shù)組指針;地址;內(nèi)存

      由于C語(yǔ)言具有高級(jí)程序設(shè)計(jì)語(yǔ)言的特點(diǎn),又具有匯編語(yǔ)言的特點(diǎn),所以它不但可以作為系統(tǒng)設(shè)計(jì)語(yǔ)言用來(lái)編寫(xiě)系統(tǒng)軟件,應(yīng)用于單片機(jī)以及嵌入式系統(tǒng)開(kāi)發(fā)等,還可以作為應(yīng)用程序設(shè)計(jì)語(yǔ)言,編寫(xiě)不依賴計(jì)算機(jī)硬件的應(yīng)用程序,處理海量的數(shù)據(jù),被廣泛應(yīng)用于各類(lèi)信息的處理. 而指針數(shù)組與數(shù)組指針則是C語(yǔ)言中的重要數(shù)據(jù)類(lèi)型,經(jīng)常被使用.因?yàn)樗鼈冃问较嘟?,很容易被混?下面從指針的概念開(kāi)始,辨析指針數(shù)組與數(shù)組指針這兩個(gè)概念,繼而給出實(shí)例闡述這兩個(gè)概念的區(qū)別[1].

      1 指針、指針數(shù)組與數(shù)組指針的概念

      1.1 指針

      指針的本質(zhì)是一個(gè)地址,表現(xiàn)為一個(gè)十六進(jìn)制的數(shù)據(jù).在內(nèi)存中,它占據(jù)4個(gè)字節(jié)的存儲(chǔ)空間,是變量在內(nèi)存當(dāng)中的實(shí)際地址.一般通過(guò)指針位置的變化實(shí)現(xiàn)對(duì)指針?biāo)赶蚩臻g的內(nèi)容操作,示例中變量和指針內(nèi)存空間示意圖如圖1.

      圖1 變量a和指針p的內(nèi)存地址

      1.2 指針數(shù)組

      指針數(shù)組(pointers of arrays),即用于存儲(chǔ)指針的數(shù)組,也就是數(shù)組元素都是指針.若數(shù)組中的每一個(gè)元素都是指針,則該數(shù)組被稱(chēng)為指針數(shù)組.譬如,若有3個(gè)元素的數(shù)組,每個(gè)元素都是指向整型變量的指針,那么其類(lèi)型定義的形式為int *p[2].換句話說(shuō),就是數(shù)組p中的元素都是int型的指針.一般情況下,我們使用*p[2]的形式,但有時(shí)候也會(huì)看到*(p[i])這種表示形式,這兩者本質(zhì)是一樣.因?yàn)?,在C語(yǔ)言的語(yǔ)法定義中,多個(gè)運(yùn)算符之間是有優(yōu)先級(jí)規(guī)定的.這里的運(yùn)算符“[]”優(yōu)先級(jí)高于運(yùn)算符“*”.

      int *p[3]; //是一個(gè)指針數(shù)組,定義了3個(gè)指針,分別為p[0]、p[1]、p[2]

      int a0=1,a1=2,a2=3;

      p[0]=&a0;p[1]=&a1;p[2]=&a2;

      其內(nèi)存空間示意圖如圖2.

      圖2 指針數(shù)組在內(nèi)存中的地址

      1.3 數(shù)組指針

      數(shù)組指針(arrays of pointers),就是指向數(shù)組的一個(gè)指針.變量的定義形式:

      數(shù)據(jù)類(lèi)型(*變量名)[元素個(gè)數(shù)];

      例如:int (*p);

      由于“()”優(yōu)先級(jí)高,首先說(shuō)明p是一個(gè)指針,指向一個(gè)整型的一維數(shù)組,這個(gè)一維數(shù)組的長(zhǎng)度是4,也可以說(shuō)是p的步長(zhǎng).也就是說(shuō)執(zhí)行p+1時(shí),p要跨過(guò)4個(gè)整型數(shù)據(jù)的長(zhǎng)度[2].

      其內(nèi)存空間示意圖如圖3.

      圖3 數(shù)組指針在內(nèi)存中地址

      2 指針數(shù)組與數(shù)組指針的應(yīng)用分析

      2.1 代碼示例

      #include

      main()

      {

      int i; //申明一個(gè)變量i

      int *p[6]; //申明一個(gè)指針數(shù)組*p[6]

      int (*q)[6]; //申明一個(gè)數(shù)組指針(*q)[6]

      int s[6]={1,7,3,4,8,2}; //創(chuàng)建一個(gè)數(shù)組s[6]并賦值

      q=s; //將數(shù)組s[6]賦值給數(shù)組指針(*q)[6]

      for(i=0;i<6;i++) //創(chuàng)建一個(gè)for循環(huán),將數(shù)組s[6]循環(huán)

      *p[i]=s[i]; //賦值給指針數(shù)組*p[6]

      printf("*p[3]=%d (*q)[3]=%d s[3]=%d",*p[3],(*q)[3],s[3]);

      //輸出*p[3],(*q)[3],s[3]

      getch();

      }

      輸出:

      *p[3]=4

      (*q)[3]=4

      s[3]=4

      2.2 指向一維數(shù)組的指針變量

      定義方法:*指針變量名,即*p.

      #include

      main()

      {

      int a[5]={1,2,3,5,7};

      int *p=a, i ;

      for(i=0,i<5,i++)

      printf("%4d",p[i]);

      getch();

      }

      輸出:1 2 3 5 7

      2.3 指向二維數(shù)組的指針變量

      定義方法:(*指針變量名)[長(zhǎng)度],即(*p)[n].

      main()

      {

      Int i,j,m,n,max;

      Int a[3] [4]={1,2,3,4,5,6,7,8,9,10,11,12};

      m=0;n=0;

      max=**a;

      for(i=0;i<4;i++)

      {

      printf(" ");

      for(j=0;j<4;j++)

      {

      printf("%5d",*(*(a+i)+j));

      if(max<*(*(a+i)+j))

      {

      max=*(*(a+i)+j));

      m=i;i=j ;

      }

      }

      }

      printf(" max is :a[%2d][%2d]=%5d",m,n,max);

      getch();

      }

      輸出:

      1 2 3 4

      5 6 7 8

      9 10 11 12

      max is :a[2][3]=12

      3 結(jié)束語(yǔ)

      數(shù)組指針是指向數(shù)組的,而指針數(shù)組中的每一個(gè)元素都是指針.因?yàn)橹羔樀谋举|(zhì)是地址,所以,不管是哪種類(lèi)型的指針,只要是類(lèi)型匹配地址就可以存放.就像指針變量可以指向某個(gè)基本類(lèi)型的變量一樣,也可以定義指針變量來(lái)指向數(shù)組與數(shù)組元素.數(shù)組各個(gè)元素在內(nèi)存中的存放是連續(xù)的,所以用指向數(shù)組或數(shù)組元素的指針變量來(lái)使用數(shù)組,令代碼的編寫(xiě)與執(zhí)行效率更高.

      [1] 韓曉新.C語(yǔ)言中的指針教學(xué)[J].常州教育學(xué)院學(xué)報(bào)(綜合版),2001,15(9):21.

      [2] 宋靈香,趙靜,劉運(yùn)奇.分析指針數(shù)組與數(shù)組指針的區(qū)別和應(yīng)用[J].甘肅高師學(xué)報(bào),2012,17(2):51-52.

      Differentiate the Array of Pointers and Pointer of Arrays

      ZHANG Xiaojun, ZHANG Jing

      (DepartmentofInformationTechnology,HenanInstituteofEducation,Zhengzhou450046,China)

      In the coding process of C language, arrays of pointers and pointers of arrays are freequently used data types. The form and meaning of them are very similar. A correct understanding of these two concepts is the premise of using C language to write code. Based on examples, expounds the difference between arrays of pointers and pointers of arrays.

      pointers; array of pointers; pointer of array; address; memory

      2016-10-27

      河南省高等學(xué)校重點(diǎn)科研項(xiàng)目計(jì)劃(16A520008)

      張小軍(1980—),男,河南鄭州人,河南教育學(xué)院信息技術(shù)系副教授,主要研究方向:計(jì)算機(jī)應(yīng)用.

      10.3969/j.issn.1007-0834.2017.01.016

      TP312

      A

      1007-0834(2017)01-0068-04

      猜你喜歡
      運(yùn)算符數(shù)據(jù)類(lèi)型數(shù)組
      JAVA稀疏矩陣算法
      老祖?zhèn)魇诨具\(yùn)算符
      詳談Java中的基本數(shù)據(jù)類(lèi)型與引用數(shù)據(jù)類(lèi)型
      JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
      如何理解數(shù)據(jù)結(jié)構(gòu)中的抽象數(shù)據(jù)類(lèi)型
      尋找勾股數(shù)組的歷程
      C++運(yùn)算符重載剖析
      表達(dá)式求值及符號(hào)推導(dǎo)
      VB數(shù)組在for循環(huán)中的應(yīng)用
      考試周刊(2012年88期)2012-04-29 04:36:47
      C++中運(yùn)算符的重載應(yīng)用
      洪雅县| 香港| 宜章县| 酉阳| 福建省| 百色市| 吉林市| 巨野县| 扬中市| 盐山县| 隆回县| 阜新市| 汉中市| 长武县| 芦山县| 尉氏县| 广丰县| 壶关县| 巴楚县| 霞浦县| 常熟市| 榆中县| 民丰县| 通许县| 临高县| 大新县| 博野县| 兴仁县| 宁波市| 陈巴尔虎旗| 焦作市| 龙井市| 肇庆市| 新龙县| 皋兰县| 凌源市| 濮阳县| 富民县| 札达县| 长海县| 黄冈市|