我正在尝试构建一个程序,通过指针指针修改数组元素。我将它加载到调试器中,我看到我的指针的值发生了变化,但由于某种原因不会影响数组中的元素。我的指针语法错了吗?我在其他地方重新分配我的指针吗?
#include <stdio.h>
#include <stdlib.h>
#define SIZE 6
/*
*
*/
void change (char **x);
int main() {
char arra[] = "Back";
char *c = arra;
change(&c);
int i;
printf("%c", arra[0]);
}
void change (char **x) {
*x = "H";
}
答案 0 :(得分:3)
*x = "H";
应该是
**x = 'H';
您正在尝试修改第一个字符,字符必须在单引号内。
这里不需要指向指针的指针。你可以在函数参数中传递衰减的数组,如 @haccks
所示答案 1 :(得分:2)
在这种情况下,不需要使用指向的指针。只需使用指向char
的指针即可。
void change (char *x);
并将其命名为
change(c);
使用函数体
void change (char *x) {
*x = 'H';
}