C言語7


n.関数


変数の範囲


ゾーン変数


同名であっても、他の地域({})に属する関数であれば、独立した別の変数である.ゾーン({})が終了すると、スタックメモリから消えます.スタックメモリによって管理され、FILOの性質を有する.

グローバル変数


プログラムが起動すると、グローバル変数はメモリに格納され、プログラムが終了すると、グローバル変数はメモリから消えます.グローバル変数はスタックメモリではなくデータメモリによって管理されます.

せいてきへんすう


カッコ領域で宣言された変数(領域変数など)は、メモリに固定されており、カッコを超えても消えません.領域変数とグローバル変数のプロパティがあります.
//1
#include <stdio.h>

void func(void);

int main(void)
{
    int i = 0;
    while(i < 5)
    {
        func();
        i++;
    }
    return 0;
}

void func(void)
{
    int value = 0;
    value++;
    printf("%d번\n", value);
}
1번
1번
1번
1번
1번
//2
#include <stdio.h>

void func(void);

int main(void)
{
    int i = 0;
    while(i < 5)
    {
        func();
        i++;
    }
    return 0;
}

void func(void)
{
    static int value = 0;
    value++;
    printf("%d번\n", value);
}
1번
2번
3번
4번
5번
1番コードについては、func(void)関数内で宣言されたvalue変数は、関数が呼び出されるたびに初期化され、呼び出されるたびに消失するが、2番コードでstatic intと宣言されたvalueは、関数が終了するたびに消失しない.
グローバル変数とは異なり、staticと宣言された変数は依然として存在し、メモリを保持しているが、他の関数(他のカッコ内)では使用できない.

整列


基本

int a[100];
배열타입 배열이름[배열길이];
配列の長さは定数として宣言する必要があります.
int size = 5;
int array[size]; // 컴파일 오류 발생
アレイに学生のスコアを入力し、合計スコアと平均スコアを出力する例
#include <stdio.h>

int main()
{
    int students[3];
    int size_std = sizeof(students) / sizeof(int);
    int i, sum = 0;

    for(i = 0; i < size_std; i++)
    {
        printf("%d 번째 학생의 점수를 입력하세요 : ", i + 1);
        scanf("%d", &students[i]);
        sum += students[i];
    }

    printf("총점 : %d\n", sum);
    printf("평균 : %d\n", sum / size_std);
}

イニシアチブの初期化


初期値の個数が
  • 配列の長さより小さい場合、残りの配列は0に埋め込まれます.
  • 初期値の個数が
  • 配列の長さより大きい場合、オーバーフローエラーが発生します.
  • 配列の長さが宣言されていない場合、初期値の個数は長さです.
  • int arr[] = {1, 2, 3, 4, 5}