作者showyoulovex (zombie)
看板Programming
标题[问题] a[5],*b[5],(*c)[5] a++,b++,c++问题
时间Sat Oct 5 20:54:14 2013
如同标题
当
char a[5],*b[5],(*c)[5];
a++;
b++;
c++;
其中 a++和b++会有问题而c++没问题
编译器是写lvalue required as increment operand
想问一下a,b详细的不能被递增的原因?
而c++又为何可以呢?请各位帮忙?
THX
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.116.164.218
1F:→ suhorng:C++也不行? 118.166.55.246 10/05 21:24
2F:→ azureblaze:array decay成pointer时是prvalue 1.34.63.98 10/05 21:31
3F:→ azureblaze:a和b是阵列,某些操作需先转成指标 1.34.63.98 10/05 21:35
4F:→ azureblaze:转成的指标存在一个暂存值中 1.34.63.98 10/05 21:36
5F:→ azureblaze:对他做更动没有意义因此被禁止 1.34.63.98 10/05 21:36
6F:→ azureblaze:就像 (a+b)++;也不行 1.34.63.98 10/05 21:36
7F:→ suhorng:阿阿, 原来我把 c++ 误以为是 C++ 了.. 118.166.62.3 10/05 22:03
8F:→ drm343:所以变数真的要好好取XD 36.236.19.155 10/06 00:50
抱歉那在问一下 *b[5] (*c)[5]差别在哪
※ 编辑: showyoulovex 来自: 36.239.221.162 (10/06 02:13)
9F:→ CindyLinz:b 是大小为5的阵列, 每个元素是 char* 112.121.80.249 10/06 03:32
10F:→ CindyLinz:c是一个指标, 可以指大小为5的char阵列 112.121.80.249 10/06 03:33
11F:推 steve1012:要记住 *这个符号是修饰前面 所以你要 114.34.202.142 10/16 23:38
12F:→ steve1012:修饰後面要括号 114.34.202.142 10/16 23:38