c語言中指針p=4,c語言指針用法

本文目錄一覽:

c語言中(*p)[4]是什麼意思

int*p[4]是指針的數組,也就是說它是一個數組,數組裡存的是一個個的指針

int(*p)[4]是數組的指針,也就是說它是一個指針,指向的是一個數組。指針指向的類型會影響到指針加減運算時地址的位移。比如說有一個數組 int a[4],加上取址運算符 a,這個表達式的類型就是指向數組的指針,可以這樣賦值 p = a;。一般用於向函數傳遞二維數組的時候使用這種類型,這時還有一種更直觀的寫法

void matrix_sum(int matrix_a[][4], int matrix_b[][4]) {…}

這種寫法和

void matrix_sum(int (*matrix_a)[4], int (*matrix_b)[4]) {…}

是等價的。

int *p=4;**q; q=&p; 中&p和p分別代表什麼?**q怎麼理解?

在C語言中指針變量也是一個變量,它存在於內存之中,跟普通的int變量沒有什麼區別。

但是指針變量跟int變量的訪問方式有一點區別。

當你訪問int變量時,是直接取變量所佔內存中的值。

而當你使用*p訪問指針變量時,是先取p所佔內存中的值,把取出的值當作一個地址,然後再取出新地址的值作為最終值。

如下圖,假如p是int型的,那值就等於p。假如p是指針型的,值就等於x。

(圖畫的比較簡單)

| |

————

| |

| x |

| |-|

———— |

| |—

| p |

| |

————

| |

int **q;這句話聲明了一個指向指針變量的指針變量,見下圖,其中q是雙重指針變量,p是指針變量,z就是具體數據了。訪問過程請自己推一下吧(用上面的方法)。

q=p;其中p表示求出p這個指針變量的在內存中的地址,而q=p就表示把p的地址作為q這個雙重指針變量的值。

| |

————

| |

| z |

| |-|

———— |

| |—

| p |

| |-|

———— |

| |—

| q |

| |

————

| |

我可憐的圖啊,為什麼把中間的空格都給我刪除了?

C語言 指針 (*p)[4] 是什麼意思?怎麼用?

指向數組的指針,相當於一個二維數組

{

int (*p)[4];

int a[4];

p = a;

a[0] = 1;

printf(“%d\n”,p[0][0]);

}

C語言中 int*p[4] 和 int(*p)[4]的區別

一、結合性不同:

前者是指針數組,為4個int指針的數組,有4個元素;

後者是數組指針,為一個指針,類型為指向包含4個int類型元素的一維數組的指針。

二、含義不同:

int*p[4]是指針的數組,也就是說它是一個數組,數組裡存的是一個個的指針。

int(*p)[4]是數組的指針,也就是說它shu是一個指針,指向的是一個數組。

三、寫法不同:

一般用於向函數傳遞二維數組的時候使用這種類型,這時還有一種更直觀的寫法:

void matrix_sum(int matrix_a[][4],int matrix_b[][4]) {…}

這種寫法和void matrix_sum(int (*matrix_a)[4], int (*matrix_b)[4]) {…}是等價的。

擴展資料:

指針數組:如char *str_B[5] 系統至少會分配5個連續的空間用來存儲5個元素,表示str_B是一個5個元素的數組,每個元素是一個指向字符型數據的一個指針。如果定義如下數組:

char a[3][8]={“gain”,”much”,”strong”};

char *n[3]={“gain”,”much”,”strong”};

他們在內存的存儲方式分別如圖1所示,可見,系統給數組a分配了

3×8的空間,而給n分配的空間則取決於具體字符串的長度。

此外,系統分配給a的空間是連續的,而給n分配的空間則不一定連續。

參考資料來源;百度百科-指針數組

C語言數組指針的元素個數怎麼定義,為什麼是4?

int (*p)[4]是將p定義成了數組指針(即指向一維數組的指針)。

既然要指向一維數組,就得知道可以指向的一維數組的大小,[]中就是指定可以指向的一維數組的大小的。

而這裡4說明只能用p指向具有4個int元素的一維數組。

當然用p指向列大小為4的二維數組的某一行也是可以的,就像圖中一樣。

下面給個例子:

int a[4]={1,2,3,4};

int b[2][4]={5,6,7,8,9,10,11,12};

int (*p)[4];

//下面都可以

p=a;

p=b;

p=b+1;

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

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

相關推薦

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

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

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

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

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

    在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
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28
  • Python作為中心語言,在編程中取代C語言的優勢和挑戰

    Python一直以其簡單易懂的語法和高效的編碼環境而著名。然而,它最近的發展趨勢表明Python的使用範圍已經從腳本語言擴展到了從Web應用到機器學習等廣泛的開發領域。與此同時,C…

    編程 2025-04-28

發表回復

登錄後才能評論