前提・実現したいこと
授業で出てきたプログラムに疑問があります。非常に初歩的ですみません。
発生している問題・エラーメッセージ
これはスタックの実装のプログラムなのですが15、26行目などでポインタを引数として使っていますが宣言や初期化はしなくてもいいのでしょうか?
該当のソースコード
c
1#include <stdio.h> 2#include <stdlib.h> 3 4#define SIZE 128 5 6typedef int elemtype; 7 8struct stack{ 9 int top; 10 elemtype elem[SIZE]; 11}; 12 13void push(struct stack *s, elemtype val){ 14 s->top++; 15 if(s->top >= SIZE){ 16 printf("stack overflow\n"); 17 exit(1); 18 }else{ 19 s->elem[s->top] = val; 20 } 21} 22 23elemtype pop(struct stack *s){ 24 elemtype val; 25 if(s->top < 0){ 26 printf("stack underflow\n"); 27 exit(1); 28 }else{ 29 val = s->elem[s->top]; 30 s->top--; 31 return val; 32 } 33} 34 35void initstack(struct stack *s){ 36 s->top = -1; 37} 38 39int stackempty(struct stack *s){ 40 return s->top < 0; 41} 42 43int main(void){ 44 struct stack buf; 45 elemtype e; 46 47 initstack(&buf); 48 49 while(scanf("%d", &e)){ 50 if (e == EOF) break; 51 push(&buf, e); 52 } 53 54 while(!stackempty(&buf)){ 55 printf("%d ", pop(&buf)); 56 } 57 printf("\n"); 58 59 return 0; 60} 61
試したこと
ポインタの授業ノートやポインタに関するサイトは読んだのですが、どこでも宣言と初期化はされていました。
補足情報(FW/ツールのバージョンなど)
回答2件
あなたの回答
tips
プレビュー