最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

簡(jiǎn)單分析C語(yǔ)言中指針數(shù)組與數(shù)組指針的區(qū)別

 更新時(shí)間:2015年11月19日 15:34:15   作者:romi  
這篇文章主要介紹了C語(yǔ)言中指針數(shù)組與數(shù)組指針的區(qū)別,是C語(yǔ)言入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下

首先來(lái)分別看一下,指針數(shù)組的一個(gè)小例子:

#include <stdio.h> 
#include <string.h> 
 
int lookup_keyword(const char*key, const char* table[], const int size) 
{ 
  int ret = -1; 
 
  int i = 0; 
 
  for(i=0; i<size; i++) 
  { 
    if (strcmp(key, table[i]) == 0) 
    { 
      ret = i; 
      break; 
    } 
  } 
  return ret; 
} 
 
#define DIM(array) (sizeof(array)/sizeof(*array)) 
 
int main() 
{ 
  const char* keyword[] = { 
      "do", 
      "for", 
      "if", 
      "register", 
      "switch", 
      "while", 
      "case", 
      "static", 
  }; 
 
  printf("%d\n", lookup_keyword("static", keyword, DIM(keyword))); 
 
  return 0; 
} 

數(shù)組指針:

#include <stdio.h> 
 
int main() 
{ 
  int i; 
  int* pI = &i; //普通類(lèi)型 
 
  typedef int(AINT5)[5]; 
  AINT5* p1; 
  int array[5]; 
  p1 = &array; //數(shù)組指針1 
 
  int (*p2)[5] = &array; //數(shù)組指針2(不建議這樣寫(xiě)) 
 
  int (*p3)[4] = &array; // X 數(shù)組指針3(不建議這樣寫(xiě)) 
 
  return 0; 
} 

這兩個(gè)名字不同當(dāng)然所代表的意思也就不同。我剛開(kāi)始看到這就嚇到了,主要是中文太博大精深了,整這樣的簡(jiǎn)稱(chēng)太專(zhuān)業(yè)了,把人都繞暈了。從英文解釋或中文全稱(chēng)看就比較容易理解。

指針數(shù)組:array of pointers,即用于存儲(chǔ)指針的數(shù)組,也就是數(shù)組元素都是指針

數(shù)組指針:a pointer to an array,即指向數(shù)組的指針

還要注意的是他們用法的區(qū)別,下面舉例說(shuō)明。

int* a[4]     指針數(shù)組    

                 表示:數(shù)組a中的元素都為int型指針   

                 元素表示:*a[i]   *(a[i])是一樣的,因?yàn)閇]優(yōu)先級(jí)高于*

int (*a)[4]   數(shù)組指針    

                 表示:指向數(shù)組a的指針

                 元素表示:(*a)[i] 

注意:在實(shí)際應(yīng)用中,對(duì)于指針數(shù)組,我們經(jīng)常這樣使用:

typedef int* pInt;
pInt a[4];

這跟上面指針數(shù)組定義所表達(dá)的意思是一樣的,只不過(guò)采取了類(lèi)型變換。

代碼演示如下:

#include <iostream>
 
using namespace std;
 
int main()
{
int c[4]={1,2,3,4};
int *a[4]; //指針數(shù)組
int (*b)[4]; //數(shù)組指針
b=&c;
//將數(shù)組c中元素賦給數(shù)組a
for(int i=0;i<4;i++)
{
a[i]=&c[i];
}
//輸出看下結(jié)果
cout<<*a[1]<<endl; //輸出2就對(duì)
cout<<(*b)[2]<<endl; //輸出3就對(duì)
return 0;
}

注意:定義了數(shù)組指針,該指針指向這個(gè)數(shù)組的首地址,必須給指針指定一個(gè)地址,容易犯的錯(cuò)得就是,不給b地址,直接用(*b)[i]=c[i]給數(shù)組b中元素賦值,這時(shí)數(shù)組指針不知道指向哪里,調(diào)試時(shí)可能沒(méi)錯(cuò),但運(yùn)行時(shí)肯定出現(xiàn)問(wèn)題,使用指針時(shí)要注意這個(gè)問(wèn)題。但為什么a就不用給他地址呢,a的元素是指針,實(shí)際上for循環(huán)內(nèi)已經(jīng)給數(shù)組a中元素指定地址了。但若在for循環(huán)內(nèi)寫(xiě)*a[i]=c[i],這同樣會(huì)出問(wèn)題??傊痪湓?,定義了指針一定要知道指針指向哪里,不然要悲劇。

相關(guān)文章

  • 利用C++開(kāi)發(fā)一個(gè)protobuf動(dòng)態(tài)解析工具

    利用C++開(kāi)發(fā)一個(gè)protobuf動(dòng)態(tài)解析工具

    數(shù)據(jù)庫(kù)中存儲(chǔ)的protobuf序列化的內(nèi)容,有時(shí)候查問(wèn)題想直接解析查看內(nèi)容。很多編碼在網(wǎng)上很容易找到編解碼工具,但protobuf沒(méi)有找到編解碼工具,可能這樣的需求比較少吧,那就自己用C++實(shí)現(xiàn)一個(gè),感興趣的可以了解一下
    2023-01-01
  • C語(yǔ)言深入講解動(dòng)態(tài)內(nèi)存分配函數(shù)的使用

    C語(yǔ)言深入講解動(dòng)態(tài)內(nèi)存分配函數(shù)的使用

    這篇文章主要介紹了C語(yǔ)言動(dòng)態(tài)內(nèi)存分配,C語(yǔ)言?xún)?nèi)存管理相關(guān)的函數(shù)主要有realloc、calloc、malloc、free、柔性數(shù)組等,下面這篇文章帶大家了解一下
    2022-05-05
  • C語(yǔ)言中遞歸的實(shí)際應(yīng)用與經(jīng)典問(wèn)題

    C語(yǔ)言中遞歸的實(shí)際應(yīng)用與經(jīng)典問(wèn)題

    函數(shù)以及函數(shù)的遞歸調(diào)用是學(xué)習(xí)C語(yǔ)言必須要掌握的內(nèi)容,且遞歸作為經(jīng)典的算法思想被廣泛應(yīng)用于程序設(shè)計(jì)中,下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言中遞歸的實(shí)際應(yīng)用與經(jīng)典問(wèn)題的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單掃雷源碼

    C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單掃雷源碼

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單掃雷源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • 使用C語(yǔ)言實(shí)現(xiàn)珠璣妙算Mastermind小游戲

    使用C語(yǔ)言實(shí)現(xiàn)珠璣妙算Mastermind小游戲

    這篇文章主要介紹了使用C語(yǔ)言實(shí)現(xiàn)珠璣妙算Mastermind小游戲,這是一款益智類(lèi)多人游戲游戲,非常有趣,需要的朋友可以參考下
    2023-03-03
  • C++中sting類(lèi)的簡(jiǎn)單實(shí)現(xiàn)方法

    C++中sting類(lèi)的簡(jiǎn)單實(shí)現(xiàn)方法

    這篇文章主要介紹了C++中sting類(lèi)的簡(jiǎn)單實(shí)現(xiàn)方法的相關(guān)資料,需要的朋友可以參考下
    2016-08-08
  • C語(yǔ)言詳盡圖解函數(shù)棧幀的創(chuàng)建和銷(xiāo)毀實(shí)現(xiàn)

    C語(yǔ)言詳盡圖解函數(shù)棧幀的創(chuàng)建和銷(xiāo)毀實(shí)現(xiàn)

    我們知道c語(yǔ)言中函數(shù)都是被調(diào)用的,main函數(shù)里面能調(diào)用其他函數(shù),其實(shí)main函數(shù)也是被別的函數(shù)調(diào)用的,下面通過(guò)本文給大家分享c語(yǔ)言函數(shù)棧幀的創(chuàng)建和銷(xiāo)毀過(guò)程,一起看看吧
    2022-05-05
  • C++11/14 線程的創(chuàng)建與分離的實(shí)現(xiàn)

    C++11/14 線程的創(chuàng)建與分離的實(shí)現(xiàn)

    這篇文章主要介紹了C++11/14 線程的創(chuàng)建與分離的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • C++利用函數(shù)動(dòng)態(tài)創(chuàng)建二維數(shù)組

    C++利用函數(shù)動(dòng)態(tài)創(chuàng)建二維數(shù)組

    這篇文章主要為大家詳細(xì)介紹了C++利用函數(shù)動(dòng)態(tài)創(chuàng)建二維數(shù)組,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • C++私有繼承與EBO深入分析講解

    C++私有繼承與EBO深入分析講解

    這篇文章主要介紹了C++私有繼承,在私有繼承當(dāng)中,基類(lèi)的公有成員和保護(hù)成員都會(huì)成為派生類(lèi)的私有成員。這意味著基類(lèi)的方法都會(huì)被private關(guān)鍵字描述,我們可以在派生類(lèi)中使用它,但類(lèi)對(duì)象無(wú)法直接調(diào)用,下面來(lái)看看詳細(xì)內(nèi)容吧
    2022-08-08

最新評(píng)論

怀远县| 临清市| 肇东市| 天长市| 彝良县| 乐平市| 泗水县| 南漳县| 义马市| 利辛县| 准格尔旗| 广丰县| 高淳县| 前郭尔| 崇信县| 永年县| 五指山市| 罗平县| 柘城县| 偏关县| 独山县| 武冈市| 鹰潭市| 南部县| 莲花县| 汉阴县| 甘洛县| 旌德县| 城步| 平潭县| 图木舒克市| 灵台县| 贡山| 克山县| 临朐县| 嵩明县| 策勒县| 荃湾区| 顺昌县| 姜堰市| 宿州市|