1. 程式人生 > >【轉】C++函式引數傳遞中的一級指標和二級指標【【**】】

【轉】C++函式引數傳遞中的一級指標和二級指標【【**】】

主要內容:

1、一級指標和二級指標

2、函式指標傳遞的例子

3、什麼時候需要傳遞二級指標?

4、二級指標在連結串列中的使用

1、一級指標和二級指標

一級指標:即我們一般說的指標,就是記憶體地址;

二級指標:指向指標的指標,就是地址的地址;

如:

int a=1;

int *p=&a;  // p為a變數的地址,通過*p可以得到a的值

int **q=&p;   // q為p指標的地址,通過**q可以得到a的值 

2、函式指標傳遞的例子

程式1:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include<stdio.h> void  fun(int  *p){ int  b=100; p=&b; } int main(){ int  a=10; int  *q; q=&a; printf("%d\n",*q); fun(q); printf("%d\n",*q); return  0; }

執行結果:

10

10

程式2:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include<stdio.h> void  fun(int  **p){ int  b=100;

相關推薦

C++函式引數傳遞一級指標二級指標**

主要內容: 1、一級指標和二級指標 2、函式指標傳遞的例子 3、什麼時候需要傳遞二級指標? 4、二級指標在連結串列中的使用 1、一級指標和二級指標 一級指標:即我們一般說的指標,就是記憶體地址; 二級指標:指向指標的指標,就是

C++C++函式過載過程的二義性型別轉換

例如函式形參的型別是int,呼叫函式時卻將short型別的資料交給了它,編譯器就需要先將short型別轉換為int型別才能匹配成功。 注意,型別提升和型別轉換不是一碼事!型別提升是積極的,是為了更加高效地利用計算機硬體,不會導致資料丟失或精度降低;而型別轉換是不得已

C++函式引數傳遞的3種方式以及優缺點(

寫函式時遇到給予函式的引數變數無法被修改的問題,轉自:https://blog.csdn.net/zhaoxun91/article/details/75417492 1 函式引數傳遞的3種方式比較 1.1 按值傳遞 #include <iostream> using names

c++ 函式引數傳遞

指標形參 當函式使用指標作為形參時, 本質也是使用傳值引數, 只是傳遞的是變數的地址,所以可以通過指標修改它所指的物件的值, 但是在c++ 中推薦使用引用型別的形參替代指標。 傳引用引數 使用引用傳參可以避免拷貝操作, 提搞程式的效率。 尤其是

C函式引數傳遞與返回值傳遞

(1)引數傳遞        __stdcall和__cdecl都是函式呼叫約定關鍵字,先給出這兩者的區別,然後舉例項分析:   __stdcall:引數由右向左壓入堆疊;堆疊由函式本身清理。     __cdecl:引數也是由右向左壓入堆疊;但堆疊由呼叫者清理。

C# 函式引數傳遞(按值引用)

先來說下C#中的資料型別.分值型別和引用型別兩大類.   值型別:直接儲存資料的值,儲存在記憶體中的stack(堆疊)中   引用型別:儲存對值的引用,實際上儲存的就是一個記憶體的地址.引用型別的儲存分成兩塊,實際值儲存在託管堆(heap)中.實際值的記憶體地址儲存在

c語言的一級指標二級指標作為函式引數,連結串列,malloc的分配等等總結

主要內容: 1、一級指標和二級指標 2、函式指標傳遞的例子 3、什麼時候需要傳遞二級指標? 4、二級指標在連結串列中的使用 1、一級指標和二級指標 一級指標:即我們一般說的指標,就是記憶體地址; 二級指標:指向指標的指標,就是地址的地址; 如: int a=

C語言:結構體一級指標二級指標的建立與釋放示例

這幾天把C語言鞏固了一下,作為一門最基本的程式語言,C語言還是相當基礎和非常重要的,個人認為C語言還是很有必要學好吃透的。 今天寫的話題是結構體結構體中一級指標和二級指標的建立與釋放,以一個例子來說明,筆者這裡自己敲得程式碼,雖然用C語言幾年了,但是有的東西還是會遺忘。筆者

C語言 通過指標二級指標遙控資料

// PointerArray.cpp : 定義控制檯應用程式的入口點。 //vs2015 #include “stdafx.h” #include <stdlib.h> void test1(int* p) { *p = 1; } void test2(int *p,int

C語言之結構體巢狀一級指標二級指標

指標是C語言的精華,也是c中最難的部分;為了鍛鍊和提高自己對指標的理解,特在結構體中巢狀一級指標和二級指標來加深對。 #include<stdio.h> #include <string.h> #include<stdlib.h&

hibernate一級快取二級快取的具體區別

一、Session快取(又稱作事務快取):Hibernate內建的,不能卸除。 快取範圍:快取只能被當前Session物件訪問。快取的生命週期依賴於Session的生命週期,當Session被關閉後,快取也就結束生命週期。 Hibernate一些與一級快取相關的操作(時間點): 資料放入快取: 1. save

C語言 指標二級指標的理解

1.變數的值存在計算機記憶體中,每個記憶體地址都由位置唯一確定;指標相當於這個位置的別名。實質:指標即是地址。 2.一個變數的值是:分配給該變數記憶體中所儲存的資料。 3.指標也是變數,叫做指標變數。 舉個例子: int a=12; int *b=&a; int *

C 編譯器優化過程的 Bug

你是 should 有一個 avi return 們的 團隊 ref 似的 一個朋友向我指出一個最近他們發現的 GCC 編譯器優化過程(加上 -O3 選項)裏的 bug,導致他們的產品出現非常詭異的行為。這使我想起以前見過的一個 GCC bug。當時很多人死活認為那種做法是

C語言函式引數傳遞的兩種方式

問題及程式碼: /* *完成日期:2018.10.2 * *問題描述:c語言函式引數傳遞的兩種方式 * */ #include <stdio.h> void swap1(int x, int y); //對交換函式myswap1的提前宣告 (傳值

luaC 函式呼叫Lua函式時,對於lua_pcall使用的困惑

最近在學習使用Lua,也通過基本的語法知識完成了公司的一個關於配置檔案引數合法性檢查的小任務。雖然任務完成了,但對於一些函式的呼叫目的還是搞不明白,這兩天再次重看了Manual Reference,稍微梳理出了一點眉目,記錄在此。 首先看一段小小小程式 fun

大致瞭解了C++函式引數傳遞

    C或C++中函式的引數傳遞包括:值傳遞、指標傳遞、引用傳遞這三種方法。     先看原始碼,編譯環境是vc6.0,因為除錯方便。功能是要實現a和b值的交換。 1 // test.cpp : Defines the entry point for the co

C 作為函式引數的多維陣列

我們都知道一維陣列作為函式引數的情況,作為函式引數的一維陣列名——實際傳遞的是指向陣列第一個元素的指標。 多維陣列名作為函式引數的傳遞方式和一維陣列名相同——實際傳遞的也是指向第一個元素的指標。 但是,兩者之間不同的是,多維陣列的每個元素本身就是另外一個數組,(例如二位陣

C++陣列作為引數傳遞的那些事兒

先看程式碼: #include <cstdio> void foo(int array[2]) { printf("int array[2]:\t\t%x %d\n", &array, sizeof(array)); } vo

C/C++函式引數傳遞詳解(從記憶體的分析)

   昨天看了記憶體管理的有關內容,有一點了解,但不是很深入,發現之前寫程式碼時有很多細節問題沒有注意到,只知道這樣做可以實現功能,卻不知道為什麼可以這樣,對於採用自己的方法造成的隱患也未知,更不曉得還有其他方法可以實現,我們知道C++強大的一個原因是因為對於一個問題的答案多種解答方法或思路,我想著也許就是

C++函式引數傳遞(值傳遞指標傳遞,引用傳遞

今天想寫一個函式,從函式中把我需要的兩個值傳出來,由於傳出來的值比較多,所以不考慮用return來返回,需要通過引數把修改後的值拉出來供我使用,很當然的就想到了用指標,但是值就是傳不出來;使我對原有的大腦中指標的思維產生混沌感,今天一上午才把函式傳遞又走了