私はCにかなり慣れていないので、自分自身を少し訓練するための簡単なスタックプログラムを書きたかったので、簡単になると思いましたが、多くの問題が発生しました...コマンドから実行するとWindowsの行では(null)
、画面に書き込むのは、だけです。表示したいのは、a.list[0]
に等しい値だけ123
です。これが私のコードです:
#include <stdio.h>
struct stack {
int list[256];
int lastelement;
};
void push(struct stack stack, int newelement) {
stack.list[stack.lastelement] = newelement;
stack.lastelement++;
};
int peek(struct stack stack) {
return stack.list[stack.lastelement];
};
int main(int argc, char *argv[]) {
struct stack a = {0, 0};
push(a, 123);
int result = peek(a);
printf("%s\n", result);
return 0;
}
構造体を値としてスタックに渡すと、変更は伝播されません。また、リスト内の初期化された要素を超えてアクセスします。10進値を印刷し"%d"
、"%s"
文字列のためです。
#include <stdio.h>
struct stack {
int list[256];
int lastelement;
};
void push(struct stack *stack, int newelement) {
stack->list[stack->lastelement] = newelement;
stack->lastelement++;
};
int peek(struct stack *stack) {
return stack->list[(stack->lastelement)-1];
};
int main(int argc, char *argv[]) {
struct stack a = {0, 0};
push(&a, 123);
push(&a, 456);
int result = peek(&a);
printf("%d\n", result);
return 0;
}
出力:
456
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加