c語言關於二級指針的問題,c++二級指針

本文目錄一覽:

關於C語言中的二級指針

二級指針就是指針的指針,也就是指向一塊內存的地址的地址。例子如下

int i = 23;

int *pi = i;

int **ppi = π

cout i ‘ ‘ *pi ‘ ‘ **ppi endl;

數組就是存放多個變數的一塊內存。該內存塊的大小取決於該數組中變數的類型和個數,

C語言中的結構體二級指針問題

// PTREE 可以理解為是 struct TreeNode * 的別名,

// PTREE 類型的變數,即是指向 struct TreeNode 結構體變數的指針,

// 那麼,PTREE * 類型的變數,就是指向 struct TreeNode 結構體變數指針的指針,

// 要理解為什麼參數中傳遞的是指向 PTREE 類型的指針,首先要了解 C 語言參數傳遞的機制

// C 語言中,形參只是實參值的一份拷貝,它們僅僅是值相等,除此外再無其他關聯,

// 重要的是,它們的地址不同,也就是說,改變了形參,實參並不受其影響。

// 而為了影響到實參,就需要知道實參的地址,通過其地址來修改實參。

// 通過把實參的地址傳給形參,就可以修改與其相關聯的實參的內容。

// C 語言的傳參是基於傳值的,理解了這個,由這類問題造成的困惑都會迎刃而解啦。

// 遇到指針問題,可以通過畫圖來幫助分析問題

// 要了解更多關於 C 語言傳參機制的更多內容,可以再百度一下。

// 希望可以幫到你

c語言二級指針問題

7——k的值

5——s=t,s是t的地址,即s指向的內容是t(一個指向整型變數的指針);

*s=m,s指向的內容是m的地址,又因為s指向的內容是t,所以t的值改變成為m的地址,即t 指向的內容為m(一個整型變數),因此*t(t指向的內容)的值為5

5——**s=*(*s)=*t

3——i的值

3——int *p=i 等價於 int *p;(定義一個整形指針p)p=i;(p的值為i的地址),所以*p的值為3

3——int **r(定義一個指針r,r指向的內容是一個整形指針),r=p(r的值為p的地址,即r指向的 內容是一個整形指針p,其中p的值是i的地址)**r=*(*r)=*p

說的不太清楚請見諒,我指針也是屬於一知半解,不過因為指針直接訪問內存,所以請一定理解好它,否則以後編寫C語言的程序很容易造成編譯器檢查不出的錯誤導致大範圍的人工查錯。

c語言關於二級指針

實參看情況比如

1 .char array[10][10];

則可以將array 傳入。

2 當然也可以 char **array;然後自己申請內存。

接著將array傳入。

3 或者char *array;

將array傳入。

當然要看你是什麼用法。

從你的函數來看你估計是要傳一個二維數組首地址,也就是第一個。

c語言 二級指針

第一條改成

int

a[10][20],*p=a[0];

二維數組本來就是以為數組,二級指針是指針的指針,不同概念

char

*a[]={“a”,”b”};

char

**p=a;

這裡定義了一個指針數組,裡面保存了兩個地址,一個是字元串a的首地址,一個是字元串b的首地址,然後數組的首地址a,這樣用一個二級指針才能訪問,這就是所謂的指針的指針

int

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

int

(*p)[2]=a;

(*p)[2]的意思是,p是一個指針變數,只想一個有兩個元素的一位數組,這不剛剛就是二維數組的首地址嗎?所以這個(*p)[2]是可以指向二維數組首地址

*p[2]的意思是,定義一個數組,裡面有兩個指針元素,這和”[]”,”*”運算符優先順序有關的

關於c語言二級指針的問題

#include stdio.h

int main(int argc, char *argv[])

{

    char *strings[]={“123″,”456″,”789”};

    char **p;

    p = strings;

    

    printf(“[%c] [%s]\n”, **p, *p);

    

    return 0;

}

列印信息是[1] [123]

很正常嘛,完全正確啊,沒啥異常。

我知道了,你可能有誤解,**p不是指向string[0],而是指向string[0][0], *p才是指向string[0]

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

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

相關推薦

  • Python官網中文版:解決你的編程問題

    Python是一種高級編程語言,它可以用於Web開發、科學計算、人工智慧等領域。Python官網中文版提供了全面的資源和教程,可以幫助你入門學習和進一步提高編程技能。 一、Pyth…

    編程 2025-04-29
  • 如何解決WPS保存提示會導致宏不可用的問題

    如果您使用過WPS,可能會碰到在保存的時候提示「文件中含有宏,保存將導致宏不可用」的問題。這個問題是因為WPS在默認情況下不允許保存帶有宏的文件,為了解決這個問題,本篇文章將從多個…

    編程 2025-04-29
  • 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
  • Java Thread.start() 執行幾次的相關問題

    Java多線程編程作為Java開發中的重要內容,自然會有很多相關問題。在本篇文章中,我們將以Java Thread.start() 執行幾次為中心,為您介紹這方面的問題及其解決方案…

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

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

    編程 2025-04-29
  • Python爬蟲亂碼問題

    在網路爬蟲中,經常會遇到中文亂碼問題。雖然Python自帶了編碼轉換功能,但有時候會出現一些比較奇怪的情況。本文章將從多個方面對Python爬蟲亂碼問題進行詳細的闡述,並給出對應的…

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

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

    編程 2025-04-29

發表回復

登錄後才能評論