欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

C 語言指針

基本概念

指針代表內(nèi)存地址。

在萊州等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、成都做網(wǎng)站 網(wǎng)站設(shè)計制作按需策劃設(shè)計,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計,成都營銷網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站建設(shè)公司,萊州網(wǎng)站建設(shè)費用合理。

通常在類型關(guān)鍵字的后面加字符*來表示指針,表示指針指向什么類型的值。比如,char*表示一個指向字符的指針,float*表示一個指向float類型值的指針。

指針指向的可能還是指針,這時要用兩個星號**表示。

int** foo;

指針變量初始化

聲明指針變量之后,編譯器會為指針變量分配一個內(nèi)存空間,但是這個內(nèi)存空間里面的值是隨機的。

因此,指針變量聲明后,必須先讓它指向一個分配好的地址,然后再進行讀寫,這叫做指針變量的初始化。

int* p;
int i;

p = &i;

為了防止讀寫未初始化的指針變量,可以將未初始化的指針變量設(shè)為NULL。

int* p = NULL;

指針運算符

* 運算符

*號除了表示指針以外,還可以作為運算符,用來取出內(nèi)存地址里面的值。

void increment(int* p) {
  *p = *p + 1;
}

*p表示指針p指向的值。對*p賦值,會改變指針所指向的地址里面的值。

& 運算符

&運算符用來取出變量所在的內(nèi)存地址。

int x = 1;
printf("x's address is %p\n", &x); // %p是內(nèi)存地址的占位符

&運算符與*運算符互為逆運算。

int i = 5;

if (i == *(&i)) // 正確

指針運算

指針本質(zhì)上是一個無符號整數(shù),代表了內(nèi)存地址。它可以進行運算,但是規(guī)則并不是整數(shù)的規(guī)則。

  • 指針與整數(shù)值的加減運算

指針與整數(shù)值的運算,表示指針的移動。

short* j;
j = (short*)0x1234;
j = j + 1; // 0x1236

上面示例中,j是一個指針,指向內(nèi)存地址0x1234。你可能以為j + 1等于0x1235,但正確答案是0x1236。原因是j + 1表示指針向內(nèi)存地址的高位移動一個單位,而一個單位的short類型占據(jù)兩個字節(jié)的寬度,所以相當于向高位移動兩個字節(jié)。同樣的,j - 1得到的結(jié)果是0x1232。

指針移動的單位,與指針指向的數(shù)據(jù)類型有關(guān)。數(shù)據(jù)類型占據(jù)多少個字節(jié),每單位就移動多少個字節(jié)。

  • 指針與指針的加法運算

雖然指針本質(zhì)上是一個無符號整數(shù),但是指針只能與整數(shù)值進行加減運算,兩個指針進行加法是非法的。

  • 指針與指針的減法

相同類型的指針允許進行減法運算,返回它們之間的距離,即相隔多少個數(shù)據(jù)單位。

高位地址減去低位地址,返回的是正值;低位地址減去高位地址,返回的是負值。

減法返回的值屬于ptrdiff_t類型,這是一個帶符號的整數(shù)類型別名,具體類型根據(jù)系統(tǒng)不同而不同。這個類型的原型定義在頭文件stddef.h里面。

short* j1;
short* j2;

j1 = (short*)0x1234;
j2 = (short*)0x1236;

ptrdiff_t dist = j2 - j1;
printf("%d\n", dist); // 1
  • 指針與指針的比較運算

指針之間的比較運算,比較的是各自的內(nèi)存地址哪一個更大,返回值是整數(shù)1(true)或0(false)。

參考: C 語言教程

本文名稱:C 語言指針
瀏覽地址:http://chinadenli.net/article24/dsoigce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)網(wǎng)站內(nèi)鏈、網(wǎng)站建設(shè)、面包屑導(dǎo)航、移動網(wǎng)站建設(shè)、App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)