首頁  >  文章  >  Java  >  簡介關於c++引用與指針

簡介關於c++引用與指針

坏嘻嘻
坏嘻嘻原創
2018-09-14 17:06:071728瀏覽

   和Python,JavaScript等高階語言一樣,PHP也可以透過C/C 編寫擴充功能。這裡分享下如何建構一個簡單的PHP擴展,以及如何呼叫第三方DLL函式庫。

  1. c語言指標
    指針虐我千百遍,我代指針如初戀,剛開始學習指針時感到很迷惑,現在看來指針知識充當一個中間人的角色,從記憶體上看指標空間用來儲存資料的位址。

#include<stdio.h>void  add_1(int num)
{
    num++;
}

void add_2(int *num)
{
    (*num)++;
}int main()
{    int number1 = 1,number2 = 1 ; 
    add_1(number1);
    add_2(&number2);    printf("%d\n",number1);    printf("%d\n",number2);    return 0;
}


簡介關於c++引用與指針

#number1的值不變,number2增加了1,add_1()中傳參相當於開闢了一個空間將number1的值複製到了該空間,對複製值所進行的所有操作對原來的資料沒有任何影響。而add_2()中傳參則是開闢一個空間儲存number2地址,對num的所有操作等於對number2的操作。

  1. c 引用
    下面的程式碼和上面的程式碼幾乎一樣,修改的僅是幾個符號,但效果是一樣的。

#include<iostream>using namespace std;void add_1(int num)
{
    num++;
}void add_2(int &num)
{
    num++;
}int main()
{    int number1 = 0, number2 = 0;
    add_1(number1);
    add_2(number2);    cout << number1 << "  " << number2 << endl;    return 0;
}

簡介關於c++引用與指針c 引用就是將number2取了個別名,實際在記憶體上儲存的還是number2記憶體位址,只是編譯器進行了一些最佳化和限制,就像我對電腦科學理解的一樣,不同的組織方式形成了不同的電腦體系結構。

   3.   c 引用作為返回值

#include<iostream>using namespace std;int n = 3;int& func()
{    return n;
}int main()
{    int num;
    num = func();    cout<<num <<endl;    return 0;
}

函數返回的時指向n的隱式指針,但需要被引用的對像不得超過作用域,也就是說看變量是作用於那個函數體內的,像上面全域變數就可以被引用,但如果放在func函數內就不行了。

 4.  c 引用與指標的一些差異

  • #指標可以空指針,但引用必須指向一塊合法的位址空間。

  • 指針可以從一個對象指向另一個對象,但引用一旦被初始化對象,則不可更改對象。

  • 指標可以在任何時間進行初始化,但引用必須在建立時初始化。

相關推薦:

使用C/C 寫PHP Extension

透過靜態局部變數看C, C ,C#,Java,PHP的特徵


以上是簡介關於c++引用與指針的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn