私はメソッドを使ってx [2]の値を0から8に変更しようとしていますが、これは動作しません。これどうやってするの?私は周りを探索しようとしたが、役に立たなかった。この値を変更しないのはなぜですか?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void changevar(int* x){
int* y;
y = &x[2];
y = 8;
}
int main(int argc, char** argv){
int* c;
c = (int*) malloc(sizeof(int));
printf("here %d\n", c[2]);
changevar(&c);
printf("here %d\n", c[2]);
free(c);
}
編集:私は十分なスペースを割り当てるための最初の必要性あなたはポインタ
あなたは1つの整数のためのスペースを割り当てるが、「バッファ」で第三にアクセスします。あなたのコードの動作は定義されていません。それを "修正"することはありません。 – StoryTeller
1) 'c [2]'は未定義の動作です。 2) 'changevar(&c)'は制約違反(すなわち、非コンパイル可能)です。 'changevar'は' int * '引数を受け取ります。あなたは 'int **'引数を渡しています。 3)y = 8は制約違反(すなわち、非コンパイル可能)である。任意の整数をポインタに割り当てることはできません。 – AnT
@AnTそれを指摘してくれてありがとう!私はもともと、パラメータが(int ** x)のchangevarを持っていた。私はどのようにx [2]を変えることができるか知っていますか? – reVolutionary