亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

深入理解c語言數組

2020-01-26 15:40:11
字體:
來源:轉載
供稿:網友

一 數組名是什么

數組就是一段連續可用的內存。
比如聲明一個 int數組

int array[]={1,2,3};

array代表什么?有的資料說:數組名是指向數組首地址的常量指針。

下面我們可以驗證一下。
我都知道sizeof操作符可以返回一個對象或者類型所占的內存字節數。
如:
int i=1;
那么sizeof(i) 的結果就是4(64位機器下的部分編譯器是8)

那我們打印sizeof(array)


printf("%d/n",sizeof(array));

結果是:12。

但是我們都知道sizeof(指針變量)==4的。


所有我們得出:數組名不完全是指向數組首地址的常量指針

為什么要用不完全,因為我們利用數組來訪問數組元素的時候。它又變得像一個常量指針。

比如
array[0]等效于*(array+0)

這時候 array就是一個指向數組首地址的常量指針,指針類型是指向數組元素類型的指針。這里就是 int*類型

我們可以這樣理解:

一個大學的名字叫array。
有人問你array是什么。你會告訴他array是大學,面積多少之類的。
但是有人問你去array怎么走,你會告訴他array的校門(首地址)在哪里。

結論:數組名其實代表的是一個內存區域,但是使用的時候變成了 指向數組首地址的常量指針。

但是這里還有一個小陷阱:

復制代碼 代碼如下:

#include <stdio.h>

void foo(int a[])
{
  printf("%d/n",sizeof(a));
}

int main(void)
{
  int array[]={1,2,3};
    foo(array);
    return 0;
}

輸出的不是12,而是4。

出于效率的考慮,數組傳參是引用傳參而不是拷貝傳參。因為數組長度可能很大,拷貝一份的話太耗資源。
雖然我是這樣函數是這樣的

復制代碼 代碼如下:

void foo(int a[])
{
printf("%d/n",sizeof(a));
}

編譯器的眼中是這樣

復制代碼 代碼如下:

void foo(int *a)
{
printf("%d/n",sizeof(a));
}

所以sizeof(a)是sizeof(指針變量)肯定是4;

二 字符數組

首先我們看一個簡單的程序

復制代碼 代碼如下:

# include <stdio.h>

int main(void)
{
  char *str1="abc";
  char str2[]="def";

  printf("%s/n",str1+4);
  return 0;
}

輸出的結果是 def。


我們要知道c語言中只要用到了 "xxxxx",系統都會自動的把雙引號的內容添加到字符常量區。
注意:printf("xxxx");不會把"xxxx"添加到字符常量區。

復制代碼 代碼如下:

char *str1="abc";         //會把 abc/0 添加到字符常量區,并把首地址賦值給str指針變量。
char str2[]="def";        //會把 def/0 添加到字符常量區,并且函數棧中添加一個字符數組 內容也是 def/0,str2指向的是棧中的數組。
char str[]={'x','y','z'}; //只會在函數棧中添加數組

由于字符常量區是連續的,所以

printf("%s/n",str1+4);


可以打印出str2的值。

三 二維數組

int array[][3]={1,2,3,4,5,6};

前面我們已經說了,使用array訪問元素時,array就是一個指針類型為指向數組元素的指針類型,指向數組首地址的指針。
二維數組的元素就是數組,

這樣寫就更容易理解:
int array[][3]={{1,2,3},{4,5,6}};

所有可以 這樣認為 array是這樣認為的
int (*const array)[3];
當我訪問數組元素時候


array[x][y]在編譯器看來就是 *(*(array+x)+y)

*(array+x) 得到的是一個 第x行 類型為 “int[3]”(c語言沒有這樣的寫法) 的數組,

數組名在訪問元素的時候當做首地址指針來用,在這里 *(array+x)等同于數組名,
指針類型int *,指向的地址為 array+sizeof(int(*)[3])*x。

訪問這個數組的第y個元素的時候,就要用 *(*(array+x)+y)。

這些就是我對c語言數組的理解,如果錯誤的地方,謝謝指正,輕噴哈。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产日韩在线观看av| 最近2019好看的中文字幕免费| 欧美老少配视频| 精品日本高清在线播放| 欧美国产欧美亚洲国产日韩mv天天看完整| 久久久精品视频在线观看| 欧美极度另类性三渗透| 国产精品一区二区性色av| 国产精品扒开腿做爽爽爽男男| 2018日韩中文字幕| 77777亚洲午夜久久多人| 日韩电影在线观看中文字幕| 97在线视频精品| 国产精品丝袜久久久久久高清| 国产欧美精品一区二区三区-老狼| 国产精品一区二区三区免费视频| 亚洲三级免费看| 日本亚洲欧美三级| 午夜精品国产精品大乳美女| 亚洲精品国产美女| 欧美成人免费全部观看天天性色| 欧美成年人网站| 欧美福利视频网站| 成人久久久久久久| 欧美极度另类性三渗透| 欧美性极品xxxx娇小| 久久精品欧美视频| 91国在线精品国内播放| 91精品国产高清久久久久久| 欧美日韩国产限制| 国产精品视频不卡| 国产精品美女主播| 亚洲午夜精品久久久久久久久久久久| 亚洲欧洲av一区二区| 欧美日在线观看| 欧美大片在线看免费观看| 国产欧美在线播放| 国内精品久久久久久影视8| 精品国产一区二区在线| 亚洲尤物视频网| 日韩欧美在线视频免费观看| 国产精品视频中文字幕91| 亚洲天堂男人的天堂| 欧美福利视频网站| 久久久久亚洲精品国产| 亚洲美女av在线播放| 国产精品丝袜高跟| 亚洲一区免费网站| 成人黄色av播放免费| 成人在线免费观看视视频| 日日摸夜夜添一区| 欧美性xxxx在线播放| 亚洲国产第一页| 久久亚洲精品中文字幕冲田杏梨| 亚洲精品国产美女| 黑人巨大精品欧美一区二区免费| 亚洲精品中文字幕女同| 国产区精品视频| 亚洲激情视频网| 亚洲乱码av中文一区二区| 午夜欧美不卡精品aaaaa| 亚洲综合中文字幕68页| 在线午夜精品自拍| 欧美剧在线观看| 久久影院资源站| 亚洲摸下面视频| 亚洲乱码av中文一区二区| 亚洲国产成人在线播放| 欧美精品videossex88| 日韩av在线免费观看| 日本国产欧美一区二区三区| 亚洲精品国产精品国产自| 欧洲日韩成人av| 国产亚洲精品91在线| 亚洲美女av黄| 亚洲黄色av网站| 精品美女国产在线| 51色欧美片视频在线观看| 亲爱的老师9免费观看全集电视剧| 亚洲精品自拍偷拍| 疯狂做受xxxx高潮欧美日本| 久久久精品视频在线观看| 国产综合久久久久久| 亚洲国产一区二区三区在线观看| 欧美激情乱人伦一区| 久久99精品视频一区97| 日韩在线观看高清| 久久久之久亚州精品露出| 国产精品视频免费在线| 97精品在线观看| 国产精品久久久久久久久久东京| 久久久中文字幕| 国产一区二区三区毛片| 欧美激情18p| 亚洲午夜未满十八勿入免费观看全集| 久精品免费视频| 亚洲色图第三页| 最近2019年好看中文字幕视频| 日韩成人在线视频| 亚洲男人第一网站| 韩日精品中文字幕| 国产精品久久久久久久9999| 国产精品直播网红| 成人字幕网zmw| 日韩av在线网| 久久久成人av| 欧美成人午夜免费视在线看片| 日韩高清中文字幕| 91在线观看免费高清完整版在线观看| 韩日精品中文字幕| 黑人巨大精品欧美一区二区免费| 日韩欧美在线播放| 欧美亚洲成人xxx| 欧美精品一区三区| 日韩中文有码在线视频| 一区二区在线视频| 国产精品电影久久久久电影网| 欧美专区在线观看| 国产精品中文字幕在线| 久久久久久com| 久久综合九色九九| 久久免费福利视频| 伊人一区二区三区久久精品| 国产国语刺激对白av不卡| 久久久亚洲国产天美传媒修理工| 成人精品网站在线观看| 欧美日韩国产黄| 国产在线精品成人一区二区三区| 欧美精品少妇videofree| 亚洲一区二区三区视频| 欧美大片欧美激情性色a∨久久| 欧美丰满少妇xxxx| 欧美激情乱人伦一区| 国产精品日韩一区| 欧美日韩国产一中文字不卡| 国产美女直播视频一区| 亚洲欧洲国产伦综合| 国产97人人超碰caoprom| 久久久成人精品| 欧美成人免费大片| 欧美精品在线观看| 亚洲一区精品电影| 91精品久久久久| 亚洲国产日韩精品在线| 亚洲精品免费av| 久久精品在线播放| 欧美日韩亚洲精品一区二区三区| 国产精品高潮粉嫩av| 伊人久久大香线蕉av一区二区| 在线视频免费一区二区| 亚洲天堂av电影| 九色成人免费视频| 久久久久久久久久久91| 久久久精品一区二区| 国产精品中文字幕在线观看| 中文字幕视频在线免费欧美日韩综合在线看| 精品国产31久久久久久| 亚洲成人aaa| 欧美激情一区二区三区久久久| 海角国产乱辈乱精品视频| xvideos国产精品| 亚洲精品久久久久久久久久久久| 欧美激情精品久久久久久免费印度| 亚洲免费伊人电影在线观看av|