2017-01-21 3 views
0

"関数のパラメータでグローバル変数を渡している間に、参照または値によって渡されますか?"C言語での関数呼び出しの引数としてのグローバル変数

+0

私の答えをチェックしてください。有用であることを願っています。 –

+0

私はテストしました、それは価値渡しを示しています。 –

+0

あなたがそうしたものなら、すでにローカル変数を作成しています。まず、あなたのコードリンクを教えてください。 –

答えて

4

値渡しです。次のコードはこれが事実であることを示している:

#include <stdio.h> 

int global = 5; 

void foo(int bar){ 
    bar = 6; 
    printf("bar = %d\nglobal = %d", bar, global); 
} 

int main(){ 
    foo(global); 
    return 0; 
} 

出力である:

このコード global

バー= 6

グローバル= 5

のように渡されましたfooのパラメータは、このパラメータをbarと呼びます。だから、最初globalbar 2つの異なる変数が値5を持つしかし、その後barされ、両方の参照によって変数を渡すには値6が割り当てられ、引数は値によって参照されて以来、5

global滞在、使用ポインタ:

#include <stdio.h> 

int global = 5; 

void foo(int *bar){ 
    *bar = 6; 
    printf("bar = %d\nglobal = %d", *bar, global); 
} 

int main(){ 
    foo(&global); 
    return 0; 
} 

今、出力は次のようになります。= 6

バーグローバル変数=は/渡す必要がありますされてどのように

+0

ありがとうございます。それは私が実際に欲しかったものです。 –

1

まず、グローバル変数を関数に渡す必要があるのはなぜですか?あなたが知っていなければ、プログラム内のどこにでも直接アクセスできます。

#include <stdio.h> 

int x = 10; //global variable 

void fun() 
{ 

printf("%d",x); // direct access 
} 
int main(void) { 

    fun();  // no argument required 
    return 0; 
} 

あなたが参照によって渡す必要がある場合は、ローカルおよびグローバル変数がCの値によって関数に渡される出力デモhttp://ideone.com/VLWqNO

+0

ご協力ありがとうございます。 :) –

+0

私はまだあなたに投票するようなレポを持っていません。:) –

+0

@ user367180それはあなたの回答をupvoteすることができますか、答えを受け入れることはできますか?はい、緑のチックで1つの回答のみを受け入れることができます:) –

3

については

10 

、あなたはポインタを使用する必要があります。 。

3

6は、いない変数に、機能に依存します。

int gMyVar; 

void foo(int a);  // says "call me by value" 
void bar(int *b);  // says "call my by reference" 

fooが渡されるint型を必要とします。 foo(gMyVarと呼びます)。

barには、intへのポインタが必要です。 bar(&gMyVar)と呼びます。

他の回答が示すように、Cは常に値を渡しますが、値は変数(値による呼び出し)の値でも、変数へのポインタ(参照による呼び出し)でもかまいません。

関連する問題