<em id="0a85b"><option id="0a85b"></option></em>

<abbr id="0a85b"></abbr>

      <nobr id="0a85b"></nobr>
        <tr id="0a85b"></tr>
        9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
        學習啦 > 學習英語 > 專業英語 > 計算機英語 > c中的用法

        c中的用法

        時間: 長思709 分享

        c中的用法

          c中的用法的用法你知道嗎?下面小編就跟你們詳細介紹下c中的用法的用法,希望對你們有用。

          c中的用法的用法如下:

          C中*、&用法介紹

          例1、

          復制代碼

          #include <stdio.h>

          int find(int *a);

          main()

          {

          int b = 1;

          int wait, test;

          test = find(&b);

          printf("內存地址為:%d",&test);

          scanf("%d", &wait);

          }

          int find(int *a)

          {

          return *a;

          }

          復制代碼

          int b = 1; int test = find(&b); 這樣調用時,實際上是進行了:int* a = &b,創建了一個新的指向b的整型指針a作為find函數范圍內的局部變量。

          示例二

          函數聲明:int find(int& a); 函數調用:int b = 1; int n = find(b);

          這樣調用時,實際上是進行了:int& a = b,給變量b起了個別名a,也就是說a和b實際上代表的是同一個變量,調用期間沒有創建任何新的變量。

          示例三

          函數聲明:int find(int a); 函數調用:int b = 1; int n = find(b);

          這樣調用時,實際上是進行了:int a = b,也就是普通的變量賦值操作,調用期間創建了在find函數范圍內的局部變量a,它的值與b相同。

          &在用于計算時就是取變量地址,如int* a = &b,就是將整型變量b的地址取出,賦值給整型指針a,a中的內容就是b的地址,所以a指向b。

          *在用于計算時,就是取指針所指向的地址中的值,如int b = *a,就是將整型指針a指向的地址中存放的內容賦值給整型變量b。

          C語言中,&符號大家一定很熟悉吧,它除了可以作為按位運算“與”之外還有更常用的功能——取變量地址。

          復制代碼

          #include <stdio.h>

          main()

          {

          int a = 0;

          int wait;

          int *p = &a;

          printf("The value is: %d\n", *p);

          scanf("%d", &wait);

          }

          復制代碼

          上面代碼中,指針p指向變量a的地址。在C/C++中,每個變量都有其相應的地址,通過在變量標識符前加&符號即可獲得變量的地址。

          那么我們這么寫可以嗎?int *p = &0x01000;

          這顯然不行。因為對于一個數值常量,它是沒有地址的。而變量之所以有地址就是因為要有一個存儲單元對變量進行標識(當然,變量也可以直接映射到某個寄存器)。

          我們再看下面的代碼:

          復制代碼

          #include "stdio.h"

          int main(void)

          {

          int a = 0; // &a = 0x0012ff60

          int *p = &*(int*)0x0012ff60;

          printf("The value is: %d\n", *p);

          return 0;

          }

          復制代碼

          上面代碼又是怎么回事呢?

          先前已經調查過變量a的地址——0x0012ff60,那么這里的指針p實際上也是指向變量a的地址。

          首先,將0x0012ff60作類型轉換,轉為int*,即經過(int*)0x0012ff60后,0x0012ff60轉化成了一個地址,這時它與&a是等價的。(類似的: int a = (int)(((int *)0)+4); (int*)0 已經轉化為一個地址了,+4 就是表示在剛才地址上加4,是地址的位移操作。)

          然后*(int*)0x0012ff60表示取變量a的內容。

          最后,&*(int*)0x0012ff60表示再脫去*(int*)0x0012ff60的解引用,相當于又變為(int*)&a。

          因此,這里的&與第一個例子中的&是不同的語義。這里的&不是取地址,因為一個*(int*)0x0012ff60不是變量,它是沒有地址的。每一個變量標識符在編譯期間,編譯器會為它們創建一個符號表,其中存放著變量標識符相應的各種屬性,如類型、地址標識等。地址標識在連接后即可確定邏輯地址值。簡而言之,&作為取地址操作,當且僅當&后面跟著的是變量或函數標識符。所以這里的&表示脫去解引用。

          由此我們可以得出:&作為取地址操作時,其行為結果是在編譯時就被確定的;而*,解引用操作(或取內容)操作,其行為結果只能在運行時才可被確定。

          再看下面的例子,加深印象:

          復制代碼

          #include "stdio.h"

          int main(void)

          {

          int a = 0;

          int *p = &*&*&a;

          printf("The value is: %d\n", *p);

          return 0;

          }

          復制代碼

          在C++中,&還可以表示引用,

          復制代碼

          #include "iostream"

          using namespace std;

          int main(void)

          {

          int a = 0;

          int &r = a;

          cout << "The value is: " << r << endl;

          return 0;

          }

        543013 主站蜘蛛池模板: 成人国内精品视频在线观看 | 本免费Av无码专区一区| 久久精品国产一区二区蜜芽| 久久久久无码精品国产AV| 高中女无套中出17p| 国产国语毛片在线看国产| 超碰国产精品久久国产精品99| 日本大香伊一区二区三区| 国产乱码精品一区二区上| 国产盗摄视频一区二区三区| 激情综合色综合啪啪开心| 国产成人啪精品午夜网站| 99在线精品免费视频| 色偷偷女人的天堂亚洲网| 亚洲伊人久久大香线蕉av| 人妻丰满熟妇无码区免费 | 无套内射视频囯产| 亚洲免费的福利片| 三级国产在线观看| 国产又爽又猛又黄视频| 亚洲人成网站观看在线观看 | 亚欧洲乱码视频在线观看| 日本熟妇XXXX潮喷视频| 猫咪AV成人永久网站在线观看| 少妇自慰流白口浆21p| 国产午夜精品无码一区二区| 亚洲欧美高清在线精品一区二区| 国产女主播一区| 亚洲高清 一区二区三区| 2020国产欧洲精品网站| 亚洲一区精品视频在线| 熟妇人妻无乱码中文字幕真矢织江 | 亚洲综合精品一区二区三区| 国产一区二区精品偷系列| 久久久久久综合网天天| 影音先锋人妻啪啪av资源网站| 色欲av无码一区二区人妻| 亚洲欧美色αv在线影视| 亚洲熟女乱色综合亚洲图片| 妖精视频亚州无吗高清版| 老太脱裤子让老头玩xxxxx|