这个网站上最接近的问题,我有几个答案让我不满意。
基本上,我有两个相关的问题:
问:如果我这样做:
char a[]= "abcde"; //created a string with 'a' as the array name/pointer to access it.
a[0]='z'; //works and changes the first character to z.
但
char *a="abcde";
a[0]='z'; //run-time error.
有什么区别?没有“const”声明,所以我应该可以自由更改内容,对吧?
问:如果我这样做:
int i[3];
i[0]=10; i[1]=20; i[2]=30;
cout<<*++i; //'i' is a pointer to i[0], so I'm incrementing it and want to print 20.
这给了我一个编译时错误,我不明白为什么。
另一方面,这有效:
int *i=new int[3];
i[0]=10; i[1]=20; i[2]=30;
cout<<*++i; //Prints 20.
谢谢您的帮助。