2
#include<iostream>

using namespace std;



int main(){

char s[10] = "abcde"; 

char* first = s - 1;

cout << first << endl;

return 0;
}

これを実行すると、コンソールに空白が表示されますが、 *first = s; と言うと。char 配列全体がコンソールに出力されます。私の質問は、s - 1 に設定したときに最初に何を指しているのかということです。

4

2 に答える 2

4

へのポインターを設定すると、ポインターは、割り当てられた文字列のs-11 つ前のメモリ内の位置にある文字を指します。charこのようなポインターの逆参照は未定義の動作です。プログラムは何かを出力したり、クラッシュしたりする可能性があります。

于 2013-07-02T01:31:20.273 に答える
0

first割り当てられていないメモリの一部を指します-動作は未定義です

于 2013-07-02T01:31:06.700 に答える