新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)C語(yǔ)言一維數(shù)組

單片機(jī)C語(yǔ)言一維數(shù)組

作者: 時(shí)間:2013-02-27 來(lái)源:網(wǎng)絡(luò) 收藏



在c和c++中數(shù)組的指針就是數(shù)組的起始地址(也就第一個(gè)元素的地址),而且標(biāo)準(zhǔn)文檔規(guī)定數(shù)組名代表數(shù)組的地址(這是地址數(shù)值層面的數(shù)組表示)。例如:

int a[10];

int *p;

p=a[0]//和p=a是等價(jià)的。

因?yàn)閍是數(shù)組名,所以他是該數(shù)組的地址,同時(shí)因?yàn)榈谝粋€(gè)元素為a[0],那么a[0]也代表了該數(shù)組的地址。但是我們是不是就說(shuō)一個(gè)數(shù)組名 和該數(shù)組的第一個(gè)元素的運(yùn)算是一回事呢?在一維的時(shí)候當(dāng)時(shí)是的,但是在高維的時(shí)候,我們要考慮到維數(shù)給數(shù)組帶來(lái)的影響。

a[10]是一個(gè)數(shù)組,a是數(shù)組名,它是一個(gè)包含10個(gè)int類型的數(shù)組類型,不是一般的指針變量噢!(雖然標(biāo)準(zhǔn)文檔規(guī)定在c++中從int[]到 int*直接轉(zhuǎn)換是可以的,在使用的時(shí)候似乎在函數(shù)的參數(shù)為指針的時(shí)候,我們將該數(shù)組名賦值沒(méi)有任何異樣),a代表數(shù)組的首地址,在數(shù)字層面和a[10] 的地址一樣。這樣我們就可以使用指針變量以及a來(lái)操作這個(gè)數(shù)組了。

所以我們要注意以下問(wèn)題:

p[i]和a[i]都是代表該數(shù)組的第i+1個(gè)元素;

p+i和a+i代表了第i+1個(gè)元素的地址,所以我們也可以使用 *(p+I)和*(a+I)來(lái)引用對(duì)象元素;

p+1不是對(duì)于指針數(shù)量上加一,而是表示從當(dāng)前的位置跳過(guò)當(dāng)前指針指向類型長(zhǎng)度的空間,對(duì)于win32的int為4byte;

c語(yǔ)言相關(guān)文章:c語(yǔ)言教程


c++相關(guān)文章:c++教程




評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉