我是C編程的初學者<現在我正在使用linux並嘗試使用gcc和clang編譯器。但是,我正面臨着一個問題,有時C不會將數據放入數組或變量中。例如,有一個我簡單的代碼中的一個,這完全不起作用:C不會將數據放入數組或數組var
#include <stdio.h>
#define size 10
struct stack{
int structTop;
int elemNum[size];
};
int create (struct stack s);
int full (struct stack s);
void push (int elem, struct stack s);
void main() {
struct stack s1;
struct stack s2;
struct stack s3;
int a = 545;
create(s1);
push(a, s1);
push(5, s1);
push(a, s1);
push(1, s1);
push(6, s1);
push(4, s1);
push(7, s1);
push(8, s1);
int i = 0;
while (i<4){
printf("%d\n", s1.elemNum[i]);
i++;
}
}
int create (struct stack s){
s.structTop = -1;
return 0;
}
int full(struct stack s){
if(s.structTop == size-1) {
return 1;
}
else {
return 0;
}
}
void push(int elem, struct stack s){
if(full(s)){
printf("Stack is full");
}
else {
s.structTop++;
s.elemNum[s.structTop]=elem;
}
}
作爲輸出我得到的數據,至極從一開始(零或隨機數)的內部數組。此外,它只是其中的一個代碼,我有幾個較大的代碼,也有同樣的問題。他們內部的變量和數組正在工作50/50,有時是的,有時不是,即使聲明和函數是相同的。有人告訴我,這可能是編譯器的問題,但我嘗試了不同的方法,並且還有一位與我一樣在不同的PC上面對此問題的Kali linux的朋友。
C使用傳遞的價值。爲了有一個功能影響的變量,你要麼需要使用*返回值*函數的返回您分配給一個變量的信息,或者您有將指針傳遞給變量 –
您正在修改原始(函數參數)本地副本的變量對原始文件沒有影響。 –
[inden](https://en.wikipedi a.org/wiki/Indent_style)[tation...](http://mrbool.com/importance-of-code-indentation/29079) – ilkkachu