2011-07-09 60 views
3

如何設置通過參數傳遞給函數的int值並將其分配給全局,以便我可以在函數外部使用?如何設置一個int值通過參數傳遞給一個函數,並將其分配給全局,所以我可以在函數之外使用?

例子:

int assignValues(int valor_assign1, valor_assign2){ 
    valor_assign1 = 7; 
    valor_assign2 = 3; 
} 

    main(){ 
int valor1 = 0; 
int valor2 = 0; 

assignValues(valor1,valor2); 
printf("%d,%d",valor1, valor2); 
} 

輸出實際上是0,0我希望它是7,3我該怎麼辦呢? 我知道它的一個簡單的問題,但我一直在嘗試和搜索,但我找不到像這樣=/ 在此先感謝。

回答

5

你可以一個指針傳遞給你的整數到函數,而不是傳遞的價值觀。例如: -

int assignValues(int *valor_assign1, int *valor_assign2){ 
    *valor_assign1 = 7; 
    *valor_assign2 = 3; 
} 

main(){ 
    int valor1 = 0; 
    int valor2 = 0; 

    assignValues(&valor1, &valor2); 
    printf("%d,%d",valor1, valor2); 
} 

你可能想讀一個pointer tutorial,但是。

+0

是什麼我想念的是那裏調用函數,但它的正確,非常感謝你! – Grego

+0

user668138:如果答案解決了您的問題,請考慮upvoting並將答案標記爲已接受。 :) –

1

傳遞指針:

int assignValues(int *valor_assign1, int *valor_assign2){ 
    *valor_assign1 = 7; 
    *valor_assign2 = 3; 
} 

main(){ 
    int valor1 = 0; 
    int valor2 = 0; 

    assignValues(&valor1,&valor2); 
    printf("%d,%d",valor1, valor2); 
} 
+0

非常感謝,非常有幫助。這正是我需要的! :) – Grego

0

您傳遞指針的變量:

void assignvalues(int *v1, int *v2) { 
    *v1 = 7; 
    *v2 = 3; 
} 

但是,在你的代碼段,valor1valor2不是全局性的。他們是main的本地人。如果他們是全球性的,你可以只分配給他們

#include <stdio.h> 
int valor1;    /* global */ 
int valor2;    /* variables */ 
int assignvalues(void) { 
    valor1 = 7; 
    valor2 = 3; 
} 
int main(void) { 
    printf("%d, %d\n", valor1, valor2); 
} 

注:全球性的使用是不可取的。您的使用情況,與本地變量,好得多。

相關問題