Yol*_*ola 1 c++ arrays pointers
为什么下一个代码给我变量x周围的堆栈已损坏?
char x[1][21];
char *ch = x[1];
strcpy(ch,"12345678901234567890");
for (int i = 0; i < 20; i++)
cout << i << ": " << &x[1][i] << " " << x[1][i] << endl;
Run Code Online (Sandbox Code Playgroud)
输出:
0: 12345678901234567890 1
1: 2345678901234567890 2
...
Run Code Online (Sandbox Code Playgroud)
char x[1][21]; 是1 x 21矩阵.
该行char *ch = x[1];正在访问第二行.所以这已经超出了界限.
尝试将其更改为:
char x[2][21];
char *ch = x[1];
strcpy(ch,"12345678901234567890");
for (int i = 0; i < 20; i++)
cout << i << ": " << &x[1][i] << " " << x[1][i] << endl;
Run Code Online (Sandbox Code Playgroud)
要么
char x[1][21];
char *ch = x[0];
strcpy(ch,"12345678901234567890");
for (int i = 0; i < 20; i++)
cout << i << ": " << &x[0][i] << " " << x[0][i] << endl;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |