変数の有効範囲について、実際にプログラムを実行しながら確認しましょう。
変数iを以下のようにfuncという関数とmainという2つの関数で定義しています。
どちらは互いに独立しています。

#include <stdio.h>
void func(int i){
 printf("funcでのi=%d\n",i);
}
int main(){
 int i=0;
 func(5);
 printf("mainでのi=%d\n",i);
 return 0;
}

func関数では、main関数の引数5を受け取っています。
main関数では、定義した int i=0が有効です。
なので、同じiでも、全く別物となります。実行結果は以下です。

c:\pg>pg
funcでのi=5
mainでのi=0

このように{}内で宣言した変数はローカル変数です。
一方、外に出すと、このプログラムで利用できるグローバルになります。

応用情報技術者試験を勉強する成子

どっちがお勧めですか?
ローカル変数です。
関数の先頭または、その変数を使用する直前が分かりやすくていいと思います。