C프로그래밍/개인 공부

C프로그래밍/개인 공부

C언어 - 포인터의 기초

포인터 point에 er을 붙인 것이다. pointer을 직역하면 '가르키는 것'이 되는데, 변수의 주소를 가지고 있는 변수이다. 즉, int i = 4이렇게 변수에 데이터를 저장했다고 가정했을때, 포인터는 변수i가 저장되어있는 메모리상 주소를 가진다. 주소 연산자 & 그렇다면 변수의 주소를 어떻게 알 수 있을까? 주소 연산자인 &를 사용하면된다. 간단한 예제를 살펴 보자. 1 2 3 4 5 6 7 8 9 #include int main(void) { int a = 10; printf("%u", &a);//%u는 주소를 십진수로 출력 return 0; } cs 이 예제에선, 변수 a를 선언하고 10을 저장했다. 그렇다면 이 변수 a가 저장되어 있는 메모리상 주소가 있을 것이다. &는 주소 연산자로써 &a..

C프로그래밍/개인 공부

C언어 - 스트림과 파일 입출력 기초(쓰기와 삭제)

입출력 함수의 분류(입출력 형식이 지정되느냐 않느냐) - 일단 눈에 익히고 가자 형식이 없는 입출력 getchar() : 문자입력 putchar() : 문자 출력 gets() : 문자열 입력 puts() : 문자열 출력 형식이 있는 입출력 printf() : 형식화된 출력 함수 scanf() : 형식화된 입력 함수 C언어에서는 모든 입출력은 스트림을 통하여 이루어진다. 그러므로 파일도 일련의 스트림으로 취급된다. 모든 파일은 입출력 동작이 발생하는 현재위치를 나타내는 파일 포인터(file pointer) = 주소를 가진다. 처음 파일을 열면 파일의 첫 번째 바이트를 가르킨다. 파일 읽기 쓰기의 순서 모든 파일은 데이터를 쓸때, open을 먼저 한다. 내부적으로는 파일과 연결된 스트림을 만들게된다. 파일을..

C프로그래밍/개인 공부

C언어 - 10진수를 2진수로 바꾸기(재귀함수)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include void binary(int n); int main(void) { int num; scanf("%d", &num); binary(num); return 0; } void binary(int n) { if(n

C프로그래밍/개인 공부

C언어 - 구조체와 포인터

요약 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include struct student{ //구조체 student를 선언하고 멤버들 정해준다. int number; char name[20]; double grade; }; int main(void) { struct student s = {19980414, "jinminu", 4.3}; //구조체 변수 s선언과 동시에 초기화 struct student *p; //구조체 student를 가르키는 포인터변수p 선언 p = &s;//포인터 p는 구조체변수 s를 가르킨다.(평소와 똑같음) } Colored by Color Scripter cs 포인터로 구조체를 가르키는게 가능하다. 4가지 경우를 살펴보자. 1 2 3 4 1. (..

C프로그래밍/개인 공부

C언어 - 문자열 변경, 문자열 상수와 포인터

문자열 변경하고 싶을때. strcpy()를 사용한다. 헤더함수에 string.h를 포함시켜야한다. 1 2 3 4 5 6 7 8 #include #include int main(void) { char str[10] = "Hi"; strcpy(str, "bye"); } cs 문자배열 str에 저장되어있는 Hi가 strcpy에 의해 bye로 바뀐다.(str문자배열로 복사) 주의!! 이렇게 하면 안됨. 1 2 3 4 5 6 7 8 #include #include int main(void) { char str[10] = "Hi"; str = "bye"; //이렇게 하면 안됨! } cs 얼핏보면 될 것 같지만, 배열의 이름은 배열이 저장되어있는 메모리의 주소이다. 위에 처럼 하면, 주소에 bye문자열을 넣는 것과 ..

C프로그래밍/개인 공부

C언어 - 간접 참조 연산자 *

포인터로 주소를 저장하거나 그 주소에 있는 데이터를 읽어올 수 있다. 1 int *p = 10000 cs 이렇게 하면 p포인터변수에 절대주소 10000을 저장한다. 이 포인터 변수는 int형이기 때문에 주소인 10000번지로 가서, 4바이트만큼 읽어들인다. 만약에 포인터변수를 선언할 때 포인터타입이 없다면 주소로부터 몇바이트를 읽어야할지 모른다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include int main(void) { int i = 414; int *p = NULL; p = &i; printf("i = %d\n", i); //변수 i의 값 414 printf("&i = %u\n", &i); //변수 i가 저장되어있는 주소 printf("*p = %d\n",..

Jminu
'C프로그래밍/개인 공부' 카테고리의 글 목록 (3 Page)