p指針指向一個(gè)二維數(shù)組
- 夕逆IT
- 開發(fā)語(yǔ)言
- 2024-11-11
- 1
大家好,今天小編來為大家解答p指針指向一個(gè)二維數(shù)組這個(gè)問題,指針指向二維數(shù)組的幾種方法很多人還不知道,現(xiàn)在讓我們一起來看看吧! 文章目錄: 1、普通的指針變量可以指向二...
大家好,今天小編來為大家解答p指針指向一個(gè)二維數(shù)組這個(gè)問題,指針指向二維數(shù)組的幾種方法很多人還不知道,現(xiàn)在讓我們一起來看看吧!
文章目錄:
- 1、普通的指針變量可以指向二維數(shù)組嗎?
- 2、C語(yǔ)言中二維數(shù)組行指針是什么
- 3、c程序中如果p指向某二維數(shù)組的某個(gè)元素,那么p[i]是?
- 4、怎么用指針指向二維數(shù)組,又怎么利用指針引用二維數(shù)組中的元素
- 5、指向二維數(shù)組的指針做函數(shù)參數(shù)
普通的指針變量可以指向二維數(shù)組嗎?
可以 C中沒有真正意義上的二維數(shù)組,是通過一維數(shù)組擴(kuò)展實(shí)現(xiàn)的,數(shù)組的每一項(xiàng)再存放指向一維數(shù)組的手指針。
這樣是不行的。二維數(shù)組的指針必須限定第一維的大小。所以:int (*ppr)[3];ppr = fool;這樣才可以。
如果只是指向首行首列(第0行0列)的元素,直接用數(shù)組名賦值給指針變量即可(與一維數(shù)組相同,數(shù)組名就是首)二維數(shù)組是以行為的,每一行都是一個(gè)一維數(shù)組,因此,存放順序是:第0行0列-第0行最后列-第1行0列-第1行最后列-第2行0列 這樣類推,在指針運(yùn)算的時(shí)候,按這個(gè)規(guī)律做推算。
所以你要定義指針去用二維數(shù)組名賦值,需要定義指針int (*k)[7];不是int *k?;蛘吣惆讯S數(shù)組當(dāng)成一維數(shù)組來看(二維內(nèi)部是連續(xù)的,和一維一樣),這樣int *k;k=&d[0][0];之后通過k++遍歷二維數(shù)組所有值。
指針變量可以指向一維數(shù)組中的元素,也可以指向多維數(shù)組中的元素。但在概念和使用上,多維數(shù)組的指針比一維數(shù)組的指針要復(fù)雜。二維數(shù)組的 二維數(shù)組可以理解為一個(gè)廣義的一維數(shù)組,一個(gè)以一維數(shù)組為元素的一維數(shù)組。
首先(*p)[3]是一個(gè)指針數(shù)組,意思就是p這個(gè)指針是指向一個(gè)含有3個(gè)元素的數(shù)組的,那么p指針每一次加1就相當(dāng)于把p中存的加6(前提是int類型占2個(gè)字節(jié),在vc中是占4個(gè)字節(jié))。
C語(yǔ)言中二維數(shù)組行指針是什么
數(shù)組名就是一個(gè)指針常量,它代表數(shù)組元素在內(nèi)存相關(guān)信息。C語(yǔ)言 是一門通用計(jì)算機(jī)編程語(yǔ)言,應(yīng)用廣泛。C語(yǔ)言的設(shè)計(jì)目標(biāo)是提供一種能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語(yǔ)言。
a即是它的行指針,a+0表示第0行的,a+1表示第1行…a[row]+col即列指針,列指針經(jīng)過一次解引用就可以轉(zhuǎn)化成二維數(shù)組中實(shí)際的值,列指針也是指向非常量的常量指針。
一維數(shù)組名a表示其首,指針類型是(int *)。二維數(shù)組名d表示其行指針,指針類型是(int (*)[7])。所以你要定義指針去用二維數(shù)組名賦值,需要定義指針int (*k)[7];不是int *k。
c程序中如果p指向某二維數(shù)組的某個(gè)元素,那么p[i]是?
1、無(wú)論幾維數(shù)組,只要指針p已經(jīng)指向了某個(gè)元素,那么p[i]就是第i個(gè)元素值(i從0起算)。當(dāng)然i有限定的取值范圍。
2、數(shù)組可以看作是一行連續(xù)的數(shù)據(jù),只有一個(gè)下標(biāo),稱為一維數(shù)組。在實(shí)際問題中有很多數(shù)據(jù)是二維的或多維的,因此C語(yǔ)言允許構(gòu)造多維數(shù)組。多維數(shù)組元素有多個(gè)下標(biāo),以確定它在數(shù)組中的位置。本節(jié)只介紹二維數(shù)組,多維數(shù)組可由二維數(shù)組類推而得到。
3、p[i]:定義元素類型是指針的數(shù)組,同樣的“i”應(yīng)該是整型的。
4、int a[3][3]相當(dāng)于定義了int** a;當(dāng)然就和int* p不一樣了。
怎么用指針指向二維數(shù)組,又怎么利用指針引用二維數(shù)組中的元素
如果只是指向首行首列(第0行0列)的元素,直接用數(shù)組名賦值給指針變量即可(與一維數(shù)組相同,數(shù)組名就是首)二維數(shù)組是以行為的,每一行都是一個(gè)一維數(shù)組,因此,存放順序是:第0行0列-第0行最后列-第1行0列-第1行最后列-第2行0列 這樣類推,在指針運(yùn)算的時(shí)候,按這個(gè)規(guī)律做推算。
在上面的 3*5 的數(shù)組中,x[0],x[1],x[2] 分別指向第 0 行,第 1 行和第 2 行的第一個(gè)元素。如果 x 是一個(gè)整形數(shù)組,那么 x[0] x[1] x[2] 就是指向 int 類型的指針,而 x 則是指向指針的指針。接下來,接收用戶輸入的行列值。
使用列指針:定義一個(gè)列指針p,讓它指向二維數(shù)組的第0個(gè)元素 int a[3][4];int *p;p=&a[0][0];//因?yàn)閍[0]是第0行的數(shù)組名,所以p=&a[0][0]相當(dāng)于p=a[0],因?yàn)閍[i][j]前面共有i*4+j個(gè)元素 該二維數(shù)組的任意i行j列元素可表示為*(p+i*4+j)。
在C語(yǔ)言中,數(shù)組是不同于普通變量的,實(shí)際上C定義的數(shù)組是指向該數(shù)組第一個(gè)元素的指針。這是第一個(gè)概念,即數(shù)組名就是指針,所以可以直接當(dāng)做指針來用,例如:對(duì)于一個(gè)數(shù)組a[],要取其第三個(gè)元素的值,既可以用a[2],也可以用a+2來訪問。
二維數(shù)組就是數(shù)組的數(shù)組,二維數(shù)組即數(shù)組的元素是一維數(shù)組的數(shù)組。那么我們要用指針指向二維數(shù)組,就是要定義一個(gè)指向數(shù)組的指針了。
指向二維數(shù)組的指針做函數(shù)參數(shù)
1、int (*p[2])[3][3]; // 表明p是一個(gè)長(zhǎng)度為2的數(shù)組,數(shù)組里面每個(gè)成員是指針,指針指向的成員是3*3二維數(shù)組。
2、所謂二維數(shù)組,實(shí)際上是指向數(shù)組的指針,比如:int n=2,m=3;int arr[n][m];實(shí)際上相當(dāng)于:int n=2,m=3;int (*arr)[m];所以,傳遞二維數(shù)組作為參數(shù),實(shí)際上就是傳遞了一個(gè)指針。
3、ptr=arr;其實(shí)你這樣賦值也是可以的,是沒有問題的。因?yàn)閍rr是二維數(shù)組的數(shù)組名,它(arr)本身就代表這個(gè)二維數(shù)組的第0行的。
4、二維數(shù)組是以行為的,每一行都是一個(gè)一維數(shù)組,因此,存放順序是:第0行0列-第0行最后列-第1行0列-第1行最后列-第2行0列 這樣類推,在指針運(yùn)算的時(shí)候,按這個(gè)規(guī)律做推算。
5、二維數(shù)組就是數(shù)組的數(shù)組,二維數(shù)組即數(shù)組的元素是一維數(shù)組的數(shù)組。那么我們要用指針指向二維數(shù)組,就是要定義一個(gè)指向數(shù)組的指針了。
6、int (*p)[3]; 它表示,數(shù)組 *p 具有三個(gè)int類型元素,分別為 (*p)[0] , (*p)[1] , (*p)[2] ,即 p指向的是具有三個(gè)int類型的一維數(shù)組,也就是說,p為行指針。此時(shí),以下運(yùn)算 p=array 是正確的。第四,二維數(shù)組作為函數(shù)參數(shù)。
文章分享結(jié)束,p指針指向一個(gè)二維數(shù)組和指針指向二維數(shù)組的幾種方法的答案你都知道了嗎?歡迎再次光臨本站哦!
本文鏈接:http://xinin56.com/kaifa/225608.html