ここに初めて投稿すると、どんな助力にも感謝します。 Stack_Initという名前の関数を使って "try"という名前のスタック内の値 "size"を変更しようとしています。関数内で "stack-> size"の値を出力すると、size(4)という正しい値が得られます。私は(コードの終わり)私の関数を実行した後 try->size
を印刷した場合、それは私の読書のための0関数を介して構造体内のデータの値を変更するにはどうすればよいですか?
struct intnode {
int data;
struct intnode *next;
}; typedef struct intnode node;
struct stack {
node *top;
int size;
}; typedef struct stack Stack;
void Stack_Init(Stack *S, int size){
Stack *stack = malloc(size*sizeof(node));
stack->top = NULL;
stack->size = size;//for some reason, this doesn't change try->size
}
int main(){
Stack *try;
int size = 4;
Stack_Init(try,size);
printf("%d %d ", try->size, try->top);
感謝の価値を与えるだろう!
'Stack * stack = malloc(size * sizeof(node));'。これはローカル変数です。 'main'では' try'とは関係ありません。なぜあなたはそれがどうだろうと思いますか?ほとんどの初心者は 'S = stack'をやっている間違いをします。 'S'は関数のローカルなので、これも間違っています。しかし、あなたはそれをしていないので、スタックが 'main'に戻ることをどのように期待しているのか分かりません。 – kaylum
私はこれまでスタックの代わりに 'S'としてそれを持っていましたが、メインでも何も変わっていませんでした。それを今見ても意味がありません、どうすれば機能に挑戦するのですか? –