c語言用指針遍歷二維數(shù)組 C語言,指針數(shù)組的遍歷?
C語言,指針數(shù)組的遍歷?指針解決方案遍歷數(shù)組示例:#include<stdio。H>int main(){int arr[]={9915100888252}int i,*P=arr,len=s
C語言,指針數(shù)組的遍歷?
指針解決方案遍歷數(shù)組示例:
#include<stdio。H>
int main(){
int arr[]={9915100888252}
int i,*P=arr,len=sizeof(arr)/sizeof(int)
for(i=0i<leni){
printf(%d,*(pi))}
]printf( )
返回0
}
數(shù)組只是內(nèi)存中數(shù)組元素的簡單排列,沒有開始和結(jié)束標(biāo)記。Sizeof(P)/Sizeof(int)在計(jì)算數(shù)組長度時(shí)不能使用,因?yàn)镻只是指向int類型的指針,編譯器不知道它是指向整數(shù)還是一系列整數(shù)(數(shù)組)。
因此,sizeof(P)計(jì)算指針變量本身占用的字節(jié)數(shù),而不是整個(gè)數(shù)組占用的字節(jié)數(shù)。也就是說,根據(jù)數(shù)組指針,整個(gè)數(shù)組元素的個(gè)數(shù),以及數(shù)組的起始和結(jié)束位置等信息都不能逆推。
用指針遍歷數(shù)組?
學(xué)習(xí)c語言的時(shí)候指針應(yīng)該怎么理解?
使用C語言實(shí)現(xiàn)字符串的壓縮?
數(shù)組的關(guān)鍵是數(shù)組占用了一個(gè)連續(xù)的內(nèi)存塊,而且數(shù)字很小,組名代表數(shù)組第一個(gè)元素的地址。簡而言之,指針是表示地址的無符號整數(shù)。
所以僅僅理解指針是不夠的。您還需要知道指針指向的數(shù)據(jù)空間是如何排列的。這可能涉及到一些與特定CPU/OS相關(guān)的知識。如果我們能用計(jì)算機(jī)體系結(jié)構(gòu)的知識來理解它,它會更深刻、更準(zhǔn)確。
例如:
如何存儲float/double/long double?
如何在數(shù)據(jù)空間中組織陣列?
字符串是如何存儲的?
如何存儲結(jié)構(gòu)和聯(lián)合體?
位域組織
具體CPU相關(guān)部分如下:
整數(shù)的存儲將涉及CPU大小的指定
浮點(diǎn)數(shù)的存儲直接關(guān)系到FPU的設(shè)計(jì)
此外,還有一些擴(kuò)展知識,涉及內(nèi)存的分配和釋放:如何在程序中分配內(nèi)存?(malloc/free)
什么是堆和堆棧?
總而言之:指針是地址和整數(shù)。但要充分利用它,我們需要了解計(jì)算機(jī)存儲空間的分配。困難在這里,突破在這里。
?? 如果數(shù)據(jù)結(jié)構(gòu)是數(shù)組的話,主要是要解決兩個(gè)問題,一是統(tǒng)計(jì)重復(fù)的字符,二是確定數(shù)組壓縮后每個(gè)元素在數(shù)組中所處的位置?! 】梢杂靡粋€(gè)指針遍歷數(shù)組,另一個(gè)指針標(biāo)記存儲位置?! ∽址虼?String)是由數(shù)字、字母、下劃線組成的一串字符。一般記為 s="a1a2···an"(n>=0)。它是編程語言中表示文本的數(shù)據(jù)類型?! ⊥ǔR源恼w作為操作對象,如:在串中查找某個(gè)子串、求取一個(gè)子串、在串的某個(gè)位置上插入一個(gè)子串以及刪除一個(gè)子串等。兩個(gè)字符串相等的充要條件是:長度相等,并且各個(gè)對應(yīng)位置上的字符都相等。設(shè)p、q是兩個(gè)串,求q在p中首次出現(xiàn)的位置的運(yùn)算叫做模式匹配。串的兩種最基本的存儲方式是順序存儲方式和鏈接存儲方式。
如果數(shù)據(jù)結(jié)構(gòu)是數(shù)組,主要解決兩個(gè)問題:一個(gè)是重復(fù)字符的計(jì)數(shù),另一個(gè)是數(shù)組壓縮后每個(gè)元素在數(shù)組中的位置的確定??梢杂靡粋€(gè)指針遍歷數(shù)組,用另一個(gè)指針標(biāo)記存儲位置。字符串是由數(shù)字、字母和下劃線組成的字符串。一般表示為s=“A1A2···an”(n>=0)。它是一種在編程語言中表示文本的數(shù)據(jù)類型。通常,整個(gè)字符串被用作操作對象,例如在字符串中搜索子字符串、查找子字符串、在字符串的某個(gè)位置插入子字符串以及刪除子字符串。當(dāng)且僅當(dāng)兩個(gè)字符串長度相等且每個(gè)對應(yīng)位置的字符相等時(shí),兩個(gè)字符串才相等。設(shè)P和Q是兩條弦。在P中找到Q的第一個(gè)位置的操作稱為模式匹配。字符串的兩種最基本的存儲方法是順序存儲和鏈接存儲。