
add(int x, int y);는 선언,프로토타입이라고 부르며
x = add(1, 2);는 아래 int부분에 call by value로 불러올 수 있다.
{
중괄호 안에 들어있는것을 통합해서 블럭이라고 한다.
}

int a부분은 지역변수이며 main함수 안에서만 사용 가능하지만
int g부분은 전역변수로 프로그램 전부분에서 사용이 가능하다.

시험범위는 지역변수와 전역변수, 자동변수, 변수와 메모리 영역으로 레지스터, 정적변수는 없다.

기억 부류 지정자는 4가지가 있는데 auto만 잘 알고있으면 된다.

지역변수와 전역변수의 차이는 블럭에서만 쓸 수 있는가와 그렇지 않은가 이다.
전역변수가 초보자라면 많이 쓰겠지만 전역변수보다 지역변수가 더 낫다고 함.
지역변수는 스택에 저장되고, 전역변수는 정적데이터영역에 저장된다.


지역변수는 stack에 저장되고 높은주소에 저장된다.
전역변수,static변수는 초기화,비초기화 데이터에 저장되고 낮은 주소에 저장이 된다.

지역변수는 블럭안에 있을때 살아있고 블럭을 빠져나오는 즉시 사라지고
4번째 줄에 있는 k=10에 5가 더해져 15로 바뀐다.

지역변수는 함수나 블럭 내에서만 유효하다.
전역 변수는 함수 밖에서 선언하며, 프로그램의 모든 부분에서 사용할 수 있음 데이터 영역을 사용하며 프로그램 실행이 종료될 때까지 값을 유지 실행시 한번 만 초기화하고 초깃값이 주어지지 않으면 0으로 자동 초기화 지역 변수와 중복해서 선언되어 있으면 지역 변수 값이 우선임

전역변수는 되도록 쓰지말것.

auto변수는 대부분 지역변수이고 블럭을 벗어나면 바로 사라진다.
단, return문으로 리턴된 값은 스택에 일시저장되어 외부로 나간다.

auto변수를 사용해 블럭안에 프린트를 먼저 출력해 3 2 1을 출력한 모습이다.(생략가능)

정수형,포인터 등 4바이트 데이터만 저장이 가능하다.
visual C++에서는 레지스터를 무시하고 자동으로 관리해준다.

auto를 궂이 쓰지는 않고 생략하고 블록 내부에 쓰지만
전역변수는 함수 외부에 쓰고 프로그램 전체에서 쓰인다.

변수 이름만 있으면 변수이고 대괄호가 포함되어있으면 배열이다.

★배열의 첫번째방은 무조건 0이며 7이라면 7번째방은 없고 0부터 6까지라고 보면 된다. (마지막방은 n-1 매우 중요)

런타임 에러는 아주 치명적인 오류이며 지금 상황은 num[3]인 경우에 방을 4개만들었기때문에 런타임 에러가 뜬 것이다.

일차원 배열을 초기화하는 방법은 대괄호안에 수를 안넣어도 자동으로 입력이 되기때문에 생략을 해도 된다.
문자형 배열은 ' '로 초기화하고 문자열도 마찬가지로 "Han S H"처럼 하지만 중괄호를 쓰고 뒤에 \0을 쓴다면
문자형 배열초기화와 같다.

문자형 배열은 이렇게 저장된다.

배열이 만약에 1000개를 0으로 만들라고 한다면 중괄호 안에 0 하나만 넣으면 된다. { 0 }

배열 초기화를 하다가 중간에 멈춘다면 나머지 부분은 전부다 0 이 된다.

배열 초기화를 한 후 x = 20이란 수 이후 대괄호에 수를 대입해서 int를 바꿔 1 2 3 0이 나오게 된 것이다.

&han1[0]이나 han1 일반 변수처럼 쓰는것이나 둘다 결괏값이 똑같이 나온다.

★매우 중요
배열의 이름을 쓰게 되면 배열 첫번째 방의 주소와 똑같이 출력된다.

다차원 배열
만약 int x[3][2]라면 1번방은 [0][0] 2번방은 [0][1]
3번방은 [1][0] 4번방은 [1][1]
5번방은 [2][0] 6번방은 [2][1] 이다.
오른쪽부터 증가. 더 이상 증가할 값이 없으면 왼쪽이 증가.
크기가 본인보다 똑같거나 클 수 없음.
int x[2][3] = { 10, 20, 30, 40, 50, 60 }이라면 10 20 30 / 40 50 60이렇게 2부류로 묶을 수 있다.

문자열과 문자형은 무조건 뒤에 null문자가 오고 문자열은 큰 따옴표로 " " 문자열은 문자마다 작은 따옴표('A')로 묶는다.

scanf로 받을때와 printf를 할때 둘다 배열에 이름을 쓰게 된다면 그 주소로 가서 null문자를 만날때 까지 입력받는다.
'C' 카테고리의 다른 글
| 15주차 강의 내용 (0) | 2024.06.10 |
|---|---|
| 14주차 실습 과제 (0) | 2024.06.03 |
| 14주차 예습과제 (0) | 2024.06.03 |
| 13주차 강의 내용 및 기말 출제 문제 (0) | 2024.05.27 |
| 13주차 예습과제 (0) | 2024.05.25 |