본문 바로가기
프로그래밍/c언어

c언어 기본 문법 정리3

by -현's- 2012. 2. 4.
반응형

●포인터 - 메모리의 주소값을 저장하기 위한 변수




&a - 변수 a의 주소값을 반환
*a - 포인터a가 가리키는 메모리를 참조



●*
- 곱셈
 ex) a*b
- 포인터 선언
ex) int *a
-포인터 접근
ex) *a


●배열 이름은 포인터 상수이다. 배열이름은 첫번재 요소의 주소값이다
ex)
int a[5]={~~~};   // 여기에서 'a'가 배열 이름이고 배열의 첫번째 요소의 주소를 저장하는 포인터이다



●문자열은 주소값으로 저장된다, 그래서 문자열선언은 배열을 만들어서 한다
ex)
chat a[5]="good";
char *str="abcd";




직접접근 - 변수를 통한 접근
간접접근 - 포인터를 이용한 접근




●구조체
ex)
struct A{
int x;
int y;
};
struct A a;  //구조체 변수 선언시 struct라는 키워드를 반드시 붙여줘야함
a.x=10;
a.y=20;


●구조체 선언과 동시에 초기화
ex)
struct person{
char name[20];
char phone[20];
int age;
};
struct person p1 = {"a", "0", 20);   //순서 중요
struct person p2 = { .age=20, .name-"a", .phone="1"};  //이방법은 순서 안 중요



●typedef - 이미 존재하는 자료형에 새로운 이름을 붙이기 위한 용도
ex)
typedef int INT;

typedef struct data DATA;


●구조체 정의와 typedef 동시에 선언
ex)
typedef struct DATA{
int a-1;
int b=2;
} DATA;



●메모리
데이터 영역 - 전역변수와 static변수가 할당되는 영역, 프로그램 시작 종료시
스택영역 - 지역변수와 매개변수가 저장되는 영역, 함수 호출 종료시
힙영역 - 프로그래머가 관리하는 영역, 동적할당시



●malloc, free - 힙에 할당,해제하는 함수, #include<stdlib.h>써야함



●배열 선언은 반드시 상수로 해야한다. 스택과 데이터영역에 할당될 메모리는 컴파일 하는 동안 결정되기 때문이다. 배열 길이를 변수로 선언하기 위해선 동적할당을 해야한다.

















반응형

댓글