什么是算数运算c语言,C语言指针算术运算是什么?

在信息工程中指针是一个用来指示一个内存地址的计算机语言的变量或中央处理器(CPU)中寄存器(Register)。指针一般出现在比较近机器语言的语言,如汇编语言或C语言。面向对象的语言如java一般避免用指针。指针一般指向一个函数或一个变量。在使用一个指针时,一个程序既可以直接使用这个指针所储存的内存地址,又可以使用这个地址里储存的变量或函数的值。

在C语言指针中保存一个值的地址,所以可以对指针变量进行算术运算。 C语言中的指针可以进行以下算术运算:

递增

递减

加法

减法

比较

1.递增指针

在数组中使用递增指针是因为它是连续的内存位置。此外,经过计算我们可以知道下一个位置的值。

递增操作取决于指针变量的数据类型。递增指针的公式如下:

new_address= current_address + i * size_of(data type)

C

32位

对于32位int变量,它将增加到2个字节。

64位

对于64位int变量,它将增加到4个字节。

下面来看看看在64位操作系统上增加指针变量的例子。创建一个源文件:increment-pointer.c,其代码如下 -

#include

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);

}

C

执行上面示例代码,得到以下结果 -

Address of p variable is 17824724

After increment: Address of p variable is 17824728

Shell

2.指针递减

与指针递增一样,我们可以递减一个指针变量。递减指针的公式如下:

32位

对于32位int变量,它将递减2个字节。

64位

对于64位int变量,它将递减4个字节。

我们来看看在64位操作系统上递减指针变量的例子。创建一个源文件:decrement-pointer.c,其代码如下 -

#include

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);

}

C

执行上面示例代码,得到以下结果 -

Address of p variable is 18218432

After decrement: Address of p variable is 18218428

Shell

3.指针相加

我们可以在指针变量上相加一个值。指针相加值的公式如下:

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

C

32位

对于32位int变量,它将相加上2 * number的值。

64位

对于64位int变量,它将增加4 * number的值。

下面来看看看在64位操作系统上相加一个值到指针变量的例子。创建一个源文件:addition-pointer.c,其代码如下 -

#include

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);

}

C

执行上面示例代码,得到以下结果 -

Address of p variable is 11926728

After adding 3: Address of p variable is 11926740

Shell

正如你所看到的,p的地址是11926728,但是在添加了3与p变量之后,它是11926740,即4 * 3 = 12增量。由于我们使用64位操作系统,所以它会相加12,但是如果使用32位操作系统,它会相加6,即2 * 3 = 6。这是由于整数值占用32位操作系统中的2字节内存。

4.指针减法

类似于指针加法,我们可以从指针变量中减去一个值。下面给出了从指针变量中减去指定值的公式:

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

C

32位

对于32位int变量,它将减去2 * number的值。

64位

对于 64位int变量,它将减去4 * number的值。

我们来看一下64位操作系统从指针变量减去指定值的例子。

创建一个源文件:subtraction-pointer.c,其代码如下 -

#include

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);

}

C

执行上面示例代码,得到以下结果 -

Address of p variable is 17825120

After subtracting 3: Address of p variable is 17825108

Shell

从指针变量中减去3后,可以看到比前一个地址值小12,即:(4 * 3)。

在信息工程中指针是一个用来指示一个内存地址的计算机语言的变量或中央处理器(CPU)中寄存器(Register)【用来指向该内存地址所对应的变量或数组】。指针一般出现在比较接近机器语言的语言,如汇编语言或C语言。面向对象的语言如Java一般避免用指针。指针一般指向一个函数或一个变量。在使用一个指针时,一个程序既可以直接使用这个指针所储存的内存地址,又可以使用这个地址里储存的函数的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值