c语言中指针加减问题,求解答。

Python021

c语言中指针加减问题,求解答。,第1张

嗯,没错,对指针的加减运算是以步长为单位的,不过这是对编译器来讲的。但是对于机器来讲,指针也是二进制数据,在机器内对它们进行运算和一般的数据是一样的,只是因为编译器知道它们是指针,所以编译器告诉你的是指针之间的步长。以下是一个测试的程序,应该能说明问题吧,仅供参考:

#include<stdio.h>

#include<stdlib.h>

void

main()

{

float

a[10],*p,*q

p=&a[4]

q=&a[7]

printf("p:

0x%0xd\n",

p)

printf("q:

0x%0xd\n",

q)

printf("p-q:

%d\n",

p-q)

printf("p+3-p:

%d\n",

p+3-p)

system("pause")

}

指针也是整数编号,也是可以进行运算的。

计算机内存就好比是一个有编号的抽屉,每个小单元(字节)都有编号,从0开始到最大内存数。

程序需要访问哪个内存,就得告知计算机在哪个编号。

题中p一开始指向字符首地址,经过while后指向字符串末尾,相减就是字符串的长度。字符串是存在连续的内存空间,所以可以这么算长度。