int a,qw,we; a = rkind(); int row, line; char* p; p = (char*)malloc(sizeof(char)); p = &board[qw][we];应如何修改
时间: 2024-05-04 15:19:34 浏览: 74
首先,变量声明可以放在代码的开头,这样可以使代码更加清晰易读。所以可以将第一行的声明放在代码的开头,如下所示:
```c++
int a, qw, we, row, line;
char* p;
```
其次,`sizeof(char)` 的值始终为1,因此 `sizeof(char)` 不需要作为动态内存分配的参数。所以,下一行的内存分配可以改写为:
```c++
p = (char*) malloc(sizeof(char)); // 不需要使用 sizeof(char)
```
接下来,根据 `&board[qw][we]` 的类型可以得知,`p` 应该是指向字符数组的指针类型,而不是单个字符的指针类型。因此,可以将 `p` 的类型修改为 `char*`,并修改赋值语句,如下所示:
```c++
char* p;
p = &board[qw][we];
```
最终修改后的代码如下:
```c++
int a, qw, we, row, line;
char* p;
a = rkind();
p = (char*) malloc(sizeof(char)); // 不需要使用 sizeof(char)
p = &board[qw][we];
```
相关问题
int a, qw, we, row, line; char* p; a = rkind(); p = (char*)malloc(sizeof(char)); p = board[qw][we];应如何修改
有几个问题需要修正:
1. `p` 的内存分配应该是根据字符串长度来分配,而不是只分配一个字符的内存空间。
2. `board[qw][we]` 的类型应该是 `char*`,而不是 `char`,因为它代表的是一个字符串。
3. 将 `board[qw][we]` 赋值给 `p` 并没有意义,因为它们指向的是同一个字符串,所以不需要再分配内存。
因此,可以这样修改代码:
```
int a, qw, we, row, line;
char* p;
a = rkind();
qw = 0; // 假设这里需要给 qw、we 赋值
we = 0;
p = (char*)malloc(sizeof(char) * (strlen(board[qw][we]) + 1)); // 分配字符串长度加一的内存空间
strcpy(p, board[qw][we]); // 将 board[qw][we] 的值复制到 p 中
```
这样就可以正确地分配内存,并将 `board[qw][we]` 的字符串复制到 `p` 中。
阅读全文