C语言指针变量运算

2025-03-07 02:11:54
推荐回答(5个)
回答1:

目前只有和整型的加减貌似可执行,是不是太奇葩了?

一点也不是,因为只需要加减运算
int *p=(int *)0xA00000000;
int *p1=p+10;
int x;
下面是指针可以进行的运算。
p-x;//指针
p+x;//指针
p--;//指针
p++;//指针
++p;//指针
--p;//指针
!p; // 整数或bool
p-p1;//整数个数

p+10;//指针
p-10;//指针

指针不需要其他运算!!!!!
难道你是想这样做!
p+=(p-p1)*200;
p-=(p-p1)/200;
p=(int *)((int)p/20);

回答2:

指针类型就其“本质”而言就是一个用于记录内存地址的16位(在16位机上)或32位(在32位机上)的整型值(用于表示某个内存地址,就好比某个宾馆里的房间号),拿它与整型值n做运算显然是可以的,表示向前或向后数n个“单位长度”的地址(向前或向后数n个房间)。
与浮点型运算,你觉得它有什么意义呢?比如402.52房间?
除了可与整型运算,还有字符型啊,亲!

回答3:

你这么做才奇葩。

指针是32位的地址,你可以试试输出一个指针看看,是一个整数。
相加的结果还是地址,但是你见过用浮点数表示内存地址的码?

回答4:

内存地址是没有小数的。

回答5:

奇葩,是用浮点数表示内存地址的?