c語言中二維指針名是指什麼,二維指針定義

本文目錄一覽:

C語言中二維數組行指針是什麼

先從存儲的角度對二維數組作一個全面的了解。二維數組在內存中的存儲,是按照先行後列依次存放的。從內存的角度看,可以這樣說,二維數組其實就是一個一維數組,在內存中沒有二維的概念。如果把二維數組的每一行看成一個整體,即看成一個數組中的一個元素,那麼整個二維數組就是一個一維數組,它以每一行作為它的元素,這個應該很好理解。

第一,來詳細介紹二維數組與指針的關係。-

首先定義個二維數組 array[3][4],p 為指向數組的指針。

若p=array[0],此時p指向的是二維數組第一行的首地址,則 p+i 將指向array[0]數組中的元素array[0][i]。由以上所介紹的二維數組在內存中的存儲方式可知,對數組中的任一元素array[i][j] ,其指針的形式為:p+i*N+j (N為每一行的長度)。 元素相應的指針表示法為:*(p+i*N+j) ,下標表示法為:p[i*N+j] 。

For Example:

array[4][3]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}};

int * p=array[0];

數組array有四個元素,分別為array[0],array[1],array[2],array[3],每個元素為包含3個元素的一維數組,

如array[0]的3個元素為 array[0][0],array[0][1],array[0][2]。

元素array[2][2]對應指針為:array+2*3+2,

指針表示法為:*(array+2*3+2) ,

下標表示法為:array[2*3+2] 。

特別注意:雖然 array[0] 與 array 都是數組首地址,但兩者指向的對象不同,這點要非常明確。array[0] 是一維數組的名字,它指向的是一維數組array[0]的首地址,所以 *array[0]與array[0][0]為同個值。而 array 是二維數組的名字,它指向的是所屬元素的首地址,其每個元素為一個行數組。它是以『行』來作為指針移動單位的,如array+i 指向的是第 i 行。對 array 進行 * 運算,得到的是一維數組 array[0] 的首地址,所以 *array 與 array[0] 為同個值。如果定義 int* p,p為指int類型的指針,指向int 類型,而不是地址。故以下操作 :p=array[0] (正確) ,p=array (錯誤) 。這點要非常注意。

第二,看看如何用數組名作地址表示其中元素。

對二維數組array ,array[0] 由 array指向,故*array 與array[0] 是相同的,依次類推可得 array[i] 由array+i 指向,*(array+i) 與array[i]是相同的。 因此,對於數組元素 array[i][j] ,用數組名表示為 *(*(array+i)+j) ,指向該元素的指針為 *(array+i)+j 。

注意:數組名雖然是地址,但與指向數組的指針性質不同。指針變數可以隨時改變其所指向對象,而數組名不可以,一旦被定義,就不能通過賦值使其指向另外一個數組,但是在Java中則可以。

第三,順便了解一下不太常用的『行數組指針』。

對於二維數組array[4][3],與int* p 。二維數組名array 不能直接賦值給p。原因前面已講過,兩隻的對象性質不同。 在C語言中,可以通過定義一個行數組指針,使得這個指針與二維數組名具有同樣的性質,實現它們之間可以直接賦值。行數組指針定義如下:

int (*p)[3]; 它表示,數組 *p 具有三個int類型元素,分別為 (*p)[0] , (*p)[1] , (*p)[2] ,即 p指向的是具有三個int類型的一維數組,也就是說,p為行指針。此時,以下運算 p=array 是正確的。

第四,二維數組作為函數參數。

二維數組作為函數參數一般有兩種方式:(1) void func(int **array){…} (2) void func(int array[ ][N])

注意第二種方式一定要指明二維數組的列數

當二維數組名作為函數實參時,對應的形參必須是一個行指針變數。

和一維數組一樣,數組名傳送給變數的是一個地址值,因此,對應的形參也必須是一個類型相同的指針變數,在函數中引用的將是主函數中的數組元素,系統只為形參開闢一個存放地址的存儲單元,而不可能在調用函數時為形參開闢一系列存放數組的存儲單元。

int main()

double a[3][4];

……

fun(a);

……

fun(double (*a)[n])

……

C語言中「二維數組行指針」是什麼意思?

數組名就是一個指針常量,它代表數組元素在內存相關信息。

1、C語言

是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

2、C語言的發明

20世紀60年代,美國ATT公司貝爾實驗室(ATT Bell Laboratory)的研究員Ken Thompson。

3、C語言標準

2011年12月8日,國際標準化組織(ISO)和國際電工委員會(IEC)再次發布了C語言的新標準,名叫ISO/IEC 9899:2011 – Information technology — Programming languages — C [9]  ,簡稱C11標準,原名C1X。這是C語言的第三個官方標準,也是C語言的最新標準。

C語言中怎樣區分一維指針和二維指針?

指針就是指針沒有維數。

指針指向的數據可以有維數,不知樓主是否問的這個意思?

比如有多維數組,就可以有多維數組的指針。

例子:

int

(*ptr)[3][3];

int

(*ptr1)[3];

則定義了兩個指針,ptr指向一個[3][3]二維int型數組,ptr1指向一個int型一維數組。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/157484.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-18 20:00
下一篇 2024-11-18 20:00

相關推薦

  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變數時顯示的指定變數類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python定義函數判斷奇偶數

    本文將從多個方面詳細闡述Python定義函數判斷奇偶數的方法,並提供完整的代碼示例。 一、初步了解Python函數 在介紹Python如何定義函數判斷奇偶數之前,我們先來了解一下P…

    編程 2025-04-29
  • 指針Python:為什麼Python中不需要使用指針?

    在Python中,指針的使用不像其他語言一樣那麼常見。這是因為Python有自己的內存管理方式,所以在大多數情況下,不需要顯式地使用指針。那麼,為什麼Python中不需要使用指針呢…

    編程 2025-04-29
  • Python符號定義和使用方法

    本文將從多個方面介紹Python符號的定義和使用方法,涉及注釋、變數、運算符、條件語句和循環等多個方面。 一、注釋 1、單行注釋 # 這是一條單行注釋 2、多行注釋 “”” 這是一…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • Python中的隊列定義

    本篇文章旨在深入闡述Python中隊列的定義及其應用,包括隊列的定義、隊列的類型、隊列的操作以及隊列的應用。同時,我們也會為您提供Python代碼示例。 一、隊列的定義 隊列是一種…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29

發表回復

登錄後才能評論