728x90

반도체, 임베디드 Study/C 3

C - 포인터

포인터 변수란 메모리의 주소 값을 저장하기 위한 변수다. 포인터는 '변수 형태의 포인터' '상수 형태의 포인터'를 어우르는 표현이다.  int main(void){ int num = 7; int * pnum; pnum = #}위 코드의 의미는 int형 변수 num에는 7의 값이 저장되어 있고, 포인터 pnum은 num 변수의 주소값이 저장되어 있다.& 연산자의 피연산자는 변수이어야 하며, 상수는 피연산자가 될 수 없다.int main(void){ int num1 = 5; double * pnum1 = &num1; double num2 = 5; int * pnum2 = &num2;}위 코드는 자료형이 일치하지 않기 때문에 문제가 발생할 수 있다.포인터가 가리키는 메..

C - 헷갈리는 개념 정리

변수, 문자열 차이 C언어에서 문자열은 배열로 선언되었을 때 이미 메모리 주소를 가지고 있다. 이는 배열 이름 자체가 해당 배열의 첫번째 요소를 가리키는 포인터로 해석되기 대문이다. 때문에 문자열 입력 시 &를 문자열 변수에 붙이지 않는다. 반면에 변수는 메모리 주소가 아니라 값 그 자체를 의미하므로 입력을 받을 때 &를 붙여 해당 변수의 주소값을 전달해야 한다. 지역변수, 전역변수 지역 변수는 함수 내에서만 생성되고, 전역 변수는 프로그램이 처음 실행되면 메모리 공간에 할당되어서 프로그램이 종료될 때까지 메모리 공간에 남아있는 변수다. 함수 내에 static을 사용할 수 있는데 이는 지역변수의 특징과 전역변수의 특징을 함께 가지고 있다.함수 내에 static을 붙이게 되면1. 선언된 함수 내에서만 접근..

C - 포인터, 이중포인터 Call-by-Value, Call-by-Reference

#define _CRT_SECURE_NO_WARNINGS #include int SquareByValue(int); int SquareByReference(int*); int main() { int num = 0; printf("정수를 입력하시오 : "); scanf("%d", &num); SquareByValue(num); printf("%d \n", num); SquareByReference(&num); printf("%d \n", num); return 0; } int SquareByValue(int num) { return num * num; } int SquareByReference(int *ptr) { int num = *ptr; *ptr = num * num; } - SquareByRefer..

728x90