[问题] 地址问题

楼主: anoymouse (没有暱称)   2014-11-23 22:37:31
请问为什么变量的地址在mian不能对他做加减运算
可是丢到函式就可以做加减法运算?
例如 char b[10]="asdf";
b=b+1; //在函数可以做
作者: bibo9901 (function(){})()   2014-11-23 22:47:00
因为 array 不是 pointer, 而且是 not modifiable但是变成指标传到函数之后, 那就是指标而不是阵列了
作者: flydragon198 (Richard)   2014-11-23 23:09:00
通常会叫address为位址
楼主: anoymouse (没有暱称)   2014-11-23 23:21:00
了解 谢谢
作者: LPH66 (-6.2598534e+18f)   2014-11-24 01:26:00
事实上你有一个问题搞错了: 阵列变量不能做的是对其赋值也就是这里出问题的是 = 这个动作而这里 + 这个动作编译器会先帮你把阵列变量变成指标再做几乎所有阵列变量能做的运算都会先这样 decay 后才进行的所以你其实可以 char *p; p = b+1; 这样是合法的p 在这之后会指向你的字串中 's' 这个 char 的所在位置
楼主: anoymouse (没有暱称)   2014-11-25 02:29:00
恩 我本是想改变指标变量b的位址
作者: LPH66 (-6.2598534e+18f)   2014-11-25 04:14:00
b 本来就不是指标变量而是阵列变量, 所以你想要那样的话就另外宣告一个指标变量来指就好

Links booklink

Contact Us: admin [ a t ] ucptt.com