在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ C++/ D語(yǔ)言指針
類(lèi)的訪(fǎng)問(wèn)修飾符
D語(yǔ)言運(yùn)算符
D語(yǔ)言邏輯運(yùn)算符
類(lèi)指針
D語(yǔ)言元組
D語(yǔ)言指針
D語(yǔ)言模塊
D語(yǔ)言sizeof運(yùn)算符
D語(yǔ)言混合類(lèi)型
D語(yǔ)言封裝
D語(yǔ)言條件編譯
類(lèi)的靜態(tài)成員
D語(yǔ)言do...while循環(huán)
D語(yǔ)言結(jié)構(gòu)體
重載
D語(yǔ)言字符串-String
D語(yǔ)言決策語(yǔ)句
D語(yǔ)言接口
D語(yǔ)言for循環(huán)
D語(yǔ)言switch語(yǔ)句
D語(yǔ)言關(guān)聯(lián)數(shù)組
D語(yǔ)言范圍
D語(yǔ)言枚舉Enums
契約式編程
D語(yǔ)言并發(fā)
D語(yǔ)言開(kāi)發(fā)環(huán)境設(shè)置
D語(yǔ)言別名
D語(yǔ)言常值
D語(yǔ)言常量
D語(yǔ)言函數(shù)
D語(yǔ)言if嵌套語(yǔ)句
D語(yǔ)言循環(huán)
D語(yǔ)言概述,D語(yǔ)言是什么?
D語(yǔ)言運(yùn)算符優(yōu)先級(jí)
D語(yǔ)言continue語(yǔ)句
D語(yǔ)言異常處理
D語(yǔ)言break語(yǔ)句
D語(yǔ)言if...else語(yǔ)句
D語(yǔ)言類(lèi)和對(duì)象
類(lèi)繼承
D語(yǔ)言字符
D語(yǔ)言教程
D語(yǔ)言關(guān)系運(yùn)算符
比較操作符重載
構(gòu)造函數(shù)和析構(gòu)函數(shù)
D語(yǔ)言抽象類(lèi)
D語(yǔ)言if語(yǔ)句
D語(yǔ)言賦值運(yùn)算符
D中算術(shù)運(yùn)算符
D語(yǔ)言類(lèi)成員函數(shù)
D語(yǔ)言位運(yùn)算符
D語(yǔ)言變量
D語(yǔ)言數(shù)據(jù)類(lèi)型
D語(yǔ)言文件I/O
D語(yǔ)言數(shù)組
一元運(yùn)算符重載
D語(yǔ)言嵌套switch語(yǔ)句
D語(yǔ)言基本語(yǔ)法
二元運(yùn)算符重載
this指針
D語(yǔ)言聯(lián)合體
D語(yǔ)言模板
D語(yǔ)言嵌套循環(huán)
D語(yǔ)言while循環(huán)

D語(yǔ)言指針

D編程指針是很容易和有趣學(xué)習(xí)。一些D編程任務(wù)的指針進(jìn)行更容易和其他D編程任務(wù),如動(dòng)態(tài)存儲(chǔ)器分配,不能沒(méi)有它們來(lái)執(zhí)行。一個(gè)簡(jiǎn)單的指針如下所示。

Yiibaier in D

而不是直接指向變量一樣,指針?biāo)赶虻闹蒂x給變量的地址。正如你所知道的每個(gè)變量是一個(gè)內(nèi)存位置和每個(gè)存儲(chǔ)單元都有其定義的地址,可以使用符號(hào)來(lái)訪(fǎng)問(wèn)(&)運(yùn)算,是指在存儲(chǔ)器中的地址。認(rèn)為這將打印中定義的變量的地址如下:

import std.stdio;
 
void main ()
{
   int  var1;
   writeln("Address of var1 variable: ",&var1);

   char var2[10];
   writeln("Address of var2 variable: ",&var2);
}

當(dāng)上面的代碼被編譯并執(zhí)行,它會(huì)產(chǎn)生什么結(jié)果如下:

Address of var1 variable: 7FFF52691928
Address of var2 variable: 7FFF52691930

什么是指針?

指針是一個(gè)變量,它的值是另一個(gè)變量的地址。如同任何變量或常量,必須聲明一個(gè)指針,然后才能使用它。一個(gè)指針變量聲明的一般形式是:

type *var-name;

其中,type是指針的基本類(lèi)型;它必須是一個(gè)有效的編程類(lèi)型和var-name是指針變量的名稱(chēng)。用來(lái)聲明一個(gè)指針的星號(hào)是用于乘法相同的星號(hào)。然而,在這個(gè)語(yǔ)句中的星號(hào)是被用來(lái)指定一個(gè)變量的指針。以下是有效的指針聲明:

int    *ip;    // yiibaier to an integer
double *dp;    // yiibaier to a double
float  *fp;    // yiibaier to a float
char   *ch     // yiibaier to character

所有指針的值的實(shí)際數(shù)據(jù)類(lèi)型,整數(shù),浮點(diǎn)數(shù),字符,或以其他方式是否是相同的,代表一個(gè)內(nèi)存地址的十六進(jìn)制數(shù)。不同數(shù)據(jù)類(lèi)型的指針之間的唯一區(qū)別是變量或常數(shù),該指針指向的數(shù)據(jù)類(lèi)型。

D編程語(yǔ)言使用指針:

有幾個(gè)重要的業(yè)務(wù),我們將與指針做的非常頻繁。 (a)我們定義一個(gè)指針變量(b)分配一個(gè)變量的地址的指針(c)在指針變量中可用的地址最終進(jìn)入的值。這是通過(guò)使用一元運(yùn)算符*,返回位于其操作數(shù)指定的地址變量的值來(lái)完成。下面的示例使用這些操作:

import std.stdio;

void main ()
{
   int  var = 20;   // actual variable declaration.
   int  *ip;        // yiibaier variable

   ip = &var;       // store address of var in yiibaier variable

   writeln("Value of var variable: ",var);

   writeln("Address stored in ip variable: ",ip);

   writeln("Value of *ip variable: ",*ip);
}

當(dāng)上面的代碼被編譯并執(zhí)行,它會(huì)產(chǎn)生什么結(jié)果如下:

Value of var variable: 20
Address stored in ip variable: 7FFF5FB7E930
Value of *ip variable: 20

Null 指針

它始終是一個(gè)好習(xí)慣,對(duì)NULL指針?lè)峙浣o案件的指針變量你沒(méi)有確切的地址進(jìn)行分配。這樣做是在變量聲明的時(shí)候。分配空指針被稱(chēng)為空指針(null)。

空指針是一個(gè)常數(shù)為零的幾個(gè)標(biāo)準(zhǔn)庫(kù),包括iostream中定義的值??紤]下面的程序:

import std.stdio;

void main ()
{
   int  *ptr = null;
   writeln("The value of ptr is " , ptr) ; 
}

讓我們編譯和運(yùn)行上面的程序,這將產(chǎn)生以下結(jié)果:

The value of ptr is null

在大多數(shù)的操作系統(tǒng),程序不允許在地址0訪(fǎng)問(wèn)內(nèi)存,因?yàn)閮?nèi)存是??由操作系統(tǒng)保留。然而,存儲(chǔ)器地址0具有特殊的意義;它表明,該指針不旨在指向一個(gè)可訪(fǎng)問(wèn)的存儲(chǔ)器位置。但按照慣例,如果一個(gè)指針包含空(零)值,它被假定為不指向什么東西。

要檢查空指針,可以使用一個(gè)if語(yǔ)句如下:

if(ptr)     // succeeds if p is not null
if(!ptr)    // succeeds if p is null

因此,如果所有未使用的指針被賦予空值,并且避免使用空指針,能避免未初始化的指針的意外誤操作。很多時(shí)候,未初始化的變量舉行一些垃圾值,就很難調(diào)試程序。

指針運(yùn)算

可以對(duì)指針的使用加減乘除四則運(yùn)算符: ++, --, +, -

為了理解指針的算術(shù)運(yùn)算,讓我們認(rèn)為,ptr是一個(gè)整數(shù)的指針,假設(shè)它32位指向的地址1000整數(shù),讓我們上的指針執(zhí)行以下算術(shù)運(yùn)算:

ptr++

ptr將指向位置1004,因?yàn)槊看蝡tr遞增,它會(huì)指向下一個(gè)整數(shù)。此操作將指針移動(dòng)到下一個(gè)內(nèi)存位置,而不在內(nèi)存中的位置影響實(shí)際值。如果ptr指向一個(gè)字符的地址是1000,那么上面的操作將指向位置1001,因?yàn)橄乱粋€(gè)字符將在1001。

遞增一個(gè)指針:

我們優(yōu)選使用在我們的程序,而不是一個(gè)數(shù)組的指針,因?yàn)樽兞恐羔樋梢赃f增,這是不能被增加,因?yàn)樗且粋€(gè)常量指針數(shù)組名不同。下面的程序?qū)⒆兞恐羔榿?lái)訪(fǎng)問(wèn)數(shù)組中的每個(gè)元素成功:

import std.stdio;

const int MAX = 3;

void main ()
{
   int  var[MAX] = [10, 100, 200];
   int  *ptr = &var[0];

   for (int i = 0; i < MAX; i++, ptr++)
   {
      writeln("Address of var[" , i , "] = ",ptr);
      writeln("Value of var[" , i , "] = ",*ptr);
   }
}

當(dāng)上面的代碼被編譯并執(zhí)行,它會(huì)產(chǎn)生一些結(jié)果如下:

Address of var[0] = 18FDBC
Value of var[0] = 10
Address of var[1] = 18FDC0
Value of var[1] = 100
Address of var[2] = 18FDC4
Value of var[2] = 200

指針與數(shù)組

指針和數(shù)組有很大的關(guān)系。然而,指針和數(shù)組不完