通过指向指针

时间:2015-06-18 17:45:18

标签: c arrays pointers

我正在尝试构建一个程序,通过指针指针修改数组元素。我将它加载到调试器中,我看到我的指针的值发生了变化,但由于某种原因不会影响数组中的元素。我的指针语法错了吗?我在其他地方重新分配我的指针吗?

#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";
    
}

2 个答案:

答案 0 :(得分:3)

*x = "H";

应该是

**x = 'H';

您正在尝试修改第一个字符,字符必须在单引号内。

这里不需要指向指针的指针。你可以在函数参数中传递衰减的数组,如 @haccks

所示

答案 1 :(得分:2)

在这种情况下,不需要使用指向的指针。只需使用指向char的指针即可。

void change (char *x);  

并将其命名为

change(c); 

使用函数体

 void change (char *x) { 
    *x = 'H';   
}