|
char p[] = "ssd";
++ p;
為什么會提示'++' needs l-value ?
為什么
char *p = "ssd";
++ p;
卻可以呢???
| 隨隨便便回復(fù)于17日03點25分
樓主,數(shù)組名跟指針是不能等同的。 |
| tian_007回復(fù)于17日05點51分
數(shù)組名是右值?慚愧了,剛知道,以前一直以為和指針是一樣的呢 |
| hsxsmz回復(fù)于17日08點00分
數(shù)組名可以轉(zhuǎn)換為指向其指代實體的指針,但是它只能被看作一個指針常量,不能被修改。 |
| pangdudu回復(fù)于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;
則通過
數(shù)組名與指針有什么區(qū)別??? |
| wql0536回復(fù)于17日11點48分
數(shù)組名是常量
改成char*p不就行了 |
| 方卓然回復(fù)于17日13點25分
一句話 數(shù)組名不能作左值... |
| 小乖鼠回復(fù)于17日14點59分
數(shù)組名是常量,不能做自增操作 |
| 劉泉05回復(fù)于17日16點21分
有什么不同??具體說一下 |
| 幸福小托盤回復(fù)于17日17點42分
有什么不同??具體說一下 |
| Afoit1000回復(fù)于17日18點51分
正解 |
| bjlantian回復(fù)于17日19點54分
指針名類型 char* const p=..(指向不可變) |
| wangziqing回復(fù)于17日20點54分
錯了不好意思^_^
#include
using namespace std;
int main(){
char *pch = "abc";
cout < < *pch < < endl;
++pch;
cout < < *pch < < endl;
} |
| hsu0115回復(fù)于17日21點48分
up!! |
| cnppri回復(fù)于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這類操作,讓人看了費解,但機器天生知道。 |
| 家有碩鼠回復(fù)于17日23點18分
char p[] = "ssd";
這時p是數(shù)組名,只有指針才能++,數(shù)組名不能++的。 |
| daisyfeelyg回復(fù)于18日01點55分
同意 |
| xinyuefff回復(fù)于18日03點36分
頂又學(xué)到了。 |
| 太行晴雪回復(fù)于18日04點13分
這樓兄弟說到點子上了。
指針可以++操作,而數(shù)組名也可以轉(zhuǎn)化為指向第一個元素的指針,但是為什么數(shù)組名不能++操作呢?
因為定義了一個數(shù)組,那么這個數(shù)組的地址就是固定的了。如char p[] = "ssd"; 那么p的地址是固定的。相當(dāng)于char*const類型。改變p的指向當(dāng)然錯了。 |
|
|