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

鍍金池/ 教程/ C/ C語(yǔ)言指針?biāo)阈g(shù)運(yùn)算
C語(yǔ)言printf()和scanf()函數(shù)
C語(yǔ)言strlen()函數(shù)
C語(yǔ)言指針
C語(yǔ)言ftell()函數(shù)
C語(yǔ)言#ifdef指令
C語(yǔ)言程序執(zhí)行流程
C語(yǔ)言歷史
C語(yǔ)言fprintf()和fscanf()函數(shù)
C語(yǔ)言#define指令
C語(yǔ)言#if指令
C語(yǔ)言將數(shù)組傳遞給函數(shù)
C語(yǔ)言指針的指針
C語(yǔ)言rewind()函數(shù)
C語(yǔ)言常量
C語(yǔ)言strcat()函數(shù)
C語(yǔ)言#ifndef指令
C語(yǔ)言continue語(yǔ)句
C語(yǔ)言注釋
C語(yǔ)言#include指令
C語(yǔ)言類型轉(zhuǎn)換
C語(yǔ)言strcpy()函數(shù)
C語(yǔ)言strlwr()函數(shù)
C語(yǔ)言while循環(huán)
C語(yǔ)言字符串
C語(yǔ)言strrev()函數(shù)
C語(yǔ)言gets()和puts()函數(shù)
C語(yǔ)言文件處理
C語(yǔ)言存儲(chǔ)分類
C語(yǔ)言運(yùn)算符
C語(yǔ)言數(shù)據(jù)類型
C語(yǔ)言strcmp()函數(shù)
C語(yǔ)言VS開發(fā)環(huán)境安裝
C語(yǔ)言轉(zhuǎn)義序列
C語(yǔ)言第一個(gè)程序
C語(yǔ)言變量
C語(yǔ)言goto語(yǔ)句
C語(yǔ)言預(yù)處理器指令
C語(yǔ)言指針?biāo)阈g(shù)運(yùn)算
C語(yǔ)言數(shù)學(xué)函數(shù)
C語(yǔ)言二維數(shù)組
C語(yǔ)言for循環(huán)
C語(yǔ)言命令行參數(shù)
C語(yǔ)言通過(guò)值和引用函數(shù)
C語(yǔ)言fputs()和fgets()函數(shù)
C語(yǔ)言do-while循環(huán)
C語(yǔ)言結(jié)構(gòu)體數(shù)組
C語(yǔ)言循環(huán)
C語(yǔ)言#pragma指令
C語(yǔ)言關(guān)鍵字
C語(yǔ)言#error指令
C語(yǔ)言聯(lián)合體
C語(yǔ)言特點(diǎn)
C語(yǔ)言break語(yǔ)句
C語(yǔ)言遞歸
C語(yǔ)言函數(shù)
C語(yǔ)言結(jié)構(gòu)體
C語(yǔ)言switch語(yǔ)句
C語(yǔ)言結(jié)構(gòu)體嵌套
C語(yǔ)言fputc()和fgetc()函數(shù)
C語(yǔ)言fseek()函數(shù)
C語(yǔ)言字符串函數(shù)
C語(yǔ)言if-else語(yǔ)句
C語(yǔ)言教程
C語(yǔ)言宏
C語(yǔ)言數(shù)組
C語(yǔ)言strupr()函數(shù)
C語(yǔ)言#undef指令

C語(yǔ)言指針?biāo)阈g(shù)運(yùn)算

在C語(yǔ)言指針中保存一個(gè)值的地址,所以可以對(duì)指針變量進(jìn)行算術(shù)運(yùn)算。 C語(yǔ)言中的指針可以進(jìn)行以下算術(shù)運(yùn)算:

  • 遞增
  • 遞減
  • 加法
  • 減法
  • 比較

1.遞增指針

在數(shù)組中使用遞增指針是因?yàn)樗沁B續(xù)的內(nèi)存位置。此外,經(jīng)過(guò)計(jì)算我們可以知道下一個(gè)位置的值。

遞增操作取決于指針變量的數(shù)據(jù)類型。遞增指針的公式如下:

new_address= current_address + i * size_of(data type)

32位

對(duì)于32int變量,它將增加到2個(gè)字節(jié)。

64位

對(duì)于64int變量,它將增加到4個(gè)字節(jié)。

下面來(lái)看看看在64位操作系統(tǒng)上增加指針變量的例子。創(chuàng)建一個(gè)源文件:increment-pointer.c,其代碼如下 -

#include <stdio.h>          
void main() {
    int number = 50;
    int *p;//pointer to int    
    p = &number;//stores the address of number variable      

    printf("Address of p variable is %u \n", p);
    p = p + 1;
    printf("After increment: Address of p variable is %u \n", p);
}

執(zhí)行上面示例代碼,得到以下結(jié)果 -

Address of p variable is 17824724
After increment: Address of p variable is 17824728

2.指針遞減

與指針遞增一樣,我們可以遞減一個(gè)指針變量。遞減指針的公式如下:

32位

對(duì)于32int變量,它將遞減2個(gè)字節(jié)。

64位

對(duì)于64int變量,它將遞減4個(gè)字節(jié)。

我們來(lái)看看在64位操作系統(tǒng)上遞減指針變量的例子。創(chuàng)建一個(gè)源文件:decrement-pointer.c,其代碼如下 -

#include <stdio.h>          
void main() {
    int number = 50;
    int *p;//pointer to int    
    p = &number;//stores the address of number variable      

    printf("Address of p variable is %u \n", p);
    p = p - 1;
    printf("After decrement: Address of p variable is %u \n", p);
}

執(zhí)行上面示例代碼,得到以下結(jié)果 -

Address of p variable is 18218432
After decrement: Address of p variable is 18218428

3.指針相加

我們可以在指針變量上相加一個(gè)值。指針相加值的公式如下:

new_address= current_address + (number * size_of(data type))

32位

對(duì)于32int變量,它將相加上2 * number的值。

64位

對(duì)于64int變量,它將增加4 * number的值。

下面來(lái)看看看在64位操作系統(tǒng)上相加一個(gè)值到指針變量的例子。創(chuàng)建一個(gè)源文件:addition-pointer.c,其代碼如下 -

#include <stdio.h>          
void main() {
    int number = 50;
    int *p;//pointer to int    
    p = &number;//stores the address of number variable      

    printf("Address of p variable is %u \n", p);
    p = p + 3;   //adding 3 to pointer variable  
    printf("After adding 3: Address of p variable is %u \n", p);
}

執(zhí)行上面示例代碼,得到以下結(jié)果 -

Address of p variable is 11926728
After adding 3: Address of p variable is 11926740

正如你所看到的,p的地址是11926728,但是在添加了3p變量之后,它是11926740,即4 * 3 = 12增量。由于我們使用64位操作系統(tǒng),所以它會(huì)相加12,但是如果使用32位操作系統(tǒng),它會(huì)相加6,即2 * 3 = 6。這是由于整數(shù)值占用32位操作系統(tǒng)中的2字節(jié)內(nèi)存。

4.指針減法

類似于指針加法,我們可以從指針變量中減去一個(gè)值。下面給出了從指針變量中減去指定值的公式:

new_address= current_address - (number * size_of(data type))

32位

對(duì)于32int變量,它將減去2 * number的值。

64位

對(duì)于 64int變量,它將減去4 * number的值。

我們來(lái)看一下64位操作系統(tǒng)從指針變量減去指定值的例子。

創(chuàng)建一個(gè)源文件:subtraction-pointer.c,其代碼如下 -

#include <stdio.h>          
void main() {
    int number = 50;
    int *p;//pointer to int    
    p = &number;//stores the address of number variable      

    printf("Address of p variable is %u \n", p);
    p = p - 3; //subtracting 3 from pointer variable  
    printf("After subtracting 3: Address of p variable is %u \n", p);
}

執(zhí)行上面示例代碼,得到以下結(jié)果 -

Address of p variable is 17825120
After subtracting 3: Address of p variable is 17825108

從指針變量中減去3后,可以看到比前一個(gè)地址值小12,即:(4 * 3)。