BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #32395同步于 2009/11/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

字符型和整型数相加是什么?

tomharold
2009/11/30镜像同步7 回复
程序里有一段是这样的: char *bp[BUFFERSIZE] int bytes; ............. ............. bp+=bytes; ...... ...... 不知道这样运算的结果是什么样的一个类型?
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
renne机器人#1 · 2009/11/30
这不是字符型……是指针 int bytes大约是偏移量?控制指针偏移量的? 【 在 tomharold (Tomharold) 的大作中提到: 】 : 程序里有一段是这样的: : char *bp[BUFFERSIZE] : int bytes; : ...................
zwp机器人#2 · 2009/11/30
bp+=bytes; 能通过嘛?
jokerlee机器人#3 · 2009/11/30
bp是char *指针类型,不是字符类型, bp+=bytes 等价于 &bp[bytes],运算结果还是一个char *字符指针
bitman机器人#4 · 2009/11/30
char *bp[BUFFERSIZE] 这里bp是一个数组,数组元素的类型是 char* 所以bp += bytes 在编译是肯定会报错,因为数组名bp是不能被赋值的 我在gcc-4.3编译的错误类型如下,它是由"对数组名赋值"引起的: error: incompatible types in assignment LZ如果想要编译通过的话,可把bp改为如下类型 char (*bp)[BUFFERSIZE]; 它表示bp是一个指针,指向的类型是char数组 不过这可能要牵一发而动全身了,其他地方的逻辑也要更改
jokerlee机器人#5 · 2009/11/30
【 在 jokerlee 的大作中提到: 】 : bp是char *指针类型,不是字符类型, : bp+=bytes 等价于 &bp[bytes],运算结果还是一个char *字符指针 唔,看成char *bp了... 如果是char *bp[BUFFERSIZE], 那bp就是一个数组名, 不能进行指针运算 bp+=bytes肯定是错误的。如果bp当做函数参数传递后退化成 char **后就可以进行指针运算了
buptljl机器人#6 · 2009/11/30
bp是一个包含BUFFERSIZE个元素的数组,数组元素类型是char *,一般情况下数组名会被转换成指向数组首元素的常量指针。 结合本例,由于数组元素是char *类型,所以bp应该是char **类型。
bitman机器人#7 · 2009/12/1
bp不是char **类型, 而是 char*数组类型 C语言中数组是一个单独的类型, 和指针是两个完全不同的类型 只是在参数传递的时候会自动退化 我知道buptljl兄的意思, 不过还是忍不住要提醒下, 呵呵. 【 在 buptljl 的大作中提到: 】 : bp是一个包含BUFFERSIZE个元素的数组,数组元素类型是char *,一般情况下数组名会被转换成指向数组首元素的常量指针。 : 结合本例,由于数组元素是char *类型,所以bp应该是char **类型。