随随便便回复于17日03点25分 楼主,数组名跟指针是不能等同的。 |
tian_007回复于17日05点51分 数组名是右值?惭愧了,刚知道,以前一直以为和指针是一样的呢 |
hsxsmz回复于17日08点00分 数组名可以转换为指向其指代实体的指针,但是它只能被看作一个指针常量,不能被修改。 |
pangdudu回复于17日10点00分 char p[] = "ssd"; char b[] = "asd"; p =b; 提示 '=' : left operand must be l-value char *p = "ssd"; char *b = "asd"; p = b; 则通过 数组名与指针有什么区别??? |
wql0536回复于17日11点48分 数组名是常量 改成char*p不就行了 |
方卓然回复于17日13点25分 一句话 数组名不能作左值... |
小乖鼠回复于17日14点59分 数组名是常量,不能做自增操作 |
刘泉05回复于17日16点21分 有什么不同??具体说一下 |
幸福小托盘回复于17日17点42分 有什么不同??具体说一下 |
Afoit1000回复于17日18点51分 正解 |
bjlantian回复于17日19点54分 指针名类型 char* const p=..(指向不可变) |
wangziqing回复于17日20点54分 错了不好意思^_^ #include using namespace std; int main(){ char *pch = "abc"; cout < < *pch < < endl; ++pch; cout < < *pch < < endl; } |
hsu0115回复于17日21点48分 up!! |
cnppri回复于17日22点31分 char p[] = "ssd"; 这是编译器事先界定了的,它是一个常量指针变量,初始化后,无法再变更。 p++,机器侦测到你有意图变更它,立刻报警,机器天生明白。 char p[4]; p = "ssd"; //如此拆分也不行,报error C2106: '=' : left operand must bel-value 说个题外话,象*p+1、p+1、&p+1这类操作,让人看了费解,但机器天生知道。 |
家有硕鼠回复于17日23点18分 char p[] = "ssd"; 这时p是数组名,只有指针才能++,数组名不能++的。 |
daisyfeelyg回复于18日01点55分 同意 |
xinyuefff回复于18日03点36分 顶又学到了。 |
太行晴雪回复于18日04点13分 这楼兄弟说到点子上了。 指针可以++操作,而数组名也可以转化为指向第一个元素的指针,但是为什么数组名不能++操作呢? 因为定义了一个数组,那么这个数组的地址就是固定的了。如char p[] = "ssd"; 那么p的地址是固定的。相当于char*const类型。改变p的指向当然错了。 |
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |