본문 바로가기

IT/c언어69

C 언어 포인터와 배열의 관계 C 언어에서 포인터와 배열은 밀접한 관계를 가지고 있습니다. 실제로 배열은 포인터의 한 형태로 볼 수 있습니다. 배열의 이름은 해당 배열의 첫 번째 요소를 가리키는 포인터로 해석됩니다. 이러한 관계로 인해 포인터와 배열 간에 많은 유사성이 있으며, 두 개념은 상호 교환이 가능합니다. 배열의 포인터 특성 배열은 메모리 상에 연속적으로 저장된 요소의 집합입니다. 배열의 이름은 첫 번째 요소의 주소를 가리키는 포인터로 해석되며, 이를 통해 배열의 요소에 접근할 수 있습니다. 예를 들어, int arr[5];와 같이 정수형 배열을 선언하면 arr은 첫 번째 요소의 주소를 가리키는 포인터로 해석됩니다. 포인터와 배열의 차이점 포인터와 배열은 유사한 동작을 수행하지만 몇 가지 중요한 차이점이 있습니다. 가장 큰 차.. 2023. 7. 12.
C 언어 포인터(Pointers) 포인터는 C 언어에서 매우 중요한 개념 중 하나입니다. 포인터는 메모리 주소를 저장하는 변수로, 다른 변수의 메모리 위치를 가리킵니다. 포인터를 사용하여 메모리의 효율적인 사용과 데이터 구조의 유연성을 제공할 수 있습니다. 포인터의 선언 포인터는 변수와 마찬가지로 선언되어야 합니다. 다음은 포인터의 선언 예입니다. int *ptr; // int형 변수를 가리키는 포인터 float *fptr; // float형 변수를 가리키는 포인터 char *cptr; // char형 변수를 가리키는 포인터 위의 예에서 * 기호는 포인터를 나타내며, 변수의 자료형 앞에 위치합니다. 포인터의 사용 포인터는 다른 변수의 메모리 주소를 저장하고 해당 주소에 접근하는 데 사용됩니다. 포인터를 사용하여 변수에 접근하려면 * 연산.. 2023. 7. 12.
C 언어 널 문자 (Null Character) 널 문자는 C 프로그래밍 언어에서 문자열을 종료하는 데 사용되는 문자입니다. 널 문자는 문자열의 끝을 나타내며, ASCII 코드에서는 0으로 표현됩니다. 널 문자를 사용하여 문자열의 끝을 알리면 문자열 함수나 입출력 함수가 문자열을 올바르게 처리할 수 있습니다. 널 문자의 사용 널 문자는 문자열 배열의 마지막에 추가됩니다. 예를 들어, "Hello"라는 문자열을 저장하기 위해 다음과 같은 배열을 선언할 수 있습니다. char str[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; 또는 다음과 같이 문자열 상수를 사용하여 선언할 수도 있습니다. char str[] = "Hello"; 널 문자의 예제 다음은 널 문자의 예제입니다. #include int main() { char str[].. 2023. 7. 12.
C 언어 배열 (Array) 배열은 C 언어에서 여러 개의 동일한 타입의 데이터를 하나의 변수로 관리하는 자료 구조입니다. 배열은 메모리에 연속적으로 할당되며, 각 요소는 인덱스를 통해 접근할 수 있습니다. 배열은 프로그래밍에서 매우 중요한 역할을 수행하며, 데이터를 효율적으로 저장하고 처리하는 데 사용됩니다. 배열의 선언과 초기화 배열은 다음과 같이 선언하고 초기화할 수 있습니다. dataType arrayName[arraySize] = {element1, element2, ..., elementN}; dataType: 배열에 저장되는 데이터의 타입을 지정합니다. arrayName: 배열의 이름을 정의합니다. arraySize: 배열의 크기를 지정합니다. element1, element2, ..., elementN: 배열에 저장될.. 2023. 7. 12.
C 언어 재귀 함수 (Recursive Function) 재귀 함수는 자기 자신을 호출하는 함수로, 문제를 더 작은 하위 문제로 분할하여 해결하는 기법입니다. 재귀 함수를 사용하면 복잡한 문제를 간단하고 우아하게 해결할 수 있습니다. 재귀 함수의 구조 재귀 함수는 다음과 같은 구조를 갖습니다. void recursiveFunction(...){ if (base condition){ // 재귀 종료 조건 // 기저 케이스 return; } else{ // 재귀 호출 recursiveFunction(...); // 추가적인 연산 } } 재귀 함수는 재귀 종료 조건을 확인한 후에 자기 자신을 호출하고, 추가적인 연산을 수행합니다. 재귀 종료 조건은 함수가 무한히 호출되는 것을 방지하기 위해 필요합니다. 재귀 함수의 예시 다음은 팩토리얼을 계산하는 재귀 함수의 예시입.. 2023. 7. 12.
C 언어 레지스터 변수(Register Variable) 레지스터 변수는 C 언어에서 사용되는 변수의 한 종류입니다. 레지스터 변수는 변수를 레지스터에 저장할 수 있다는 것을 컴파일러에게 알리는 역할을 합니다. 컴파일러는 이 힌트를 참고하여 해당 변수를 레지스터에 저장할지 여부를 결정합니다. 레지스터 변수는 프로그램 실행 시 메모리 액세스를 줄이고 성능을 향상시킬 수 있는 장점을 가지고 있습니다. 레지스터 변수의 선언과 사용 레지스터 변수는 다음과 같이 선언됩니다. register int x; 위 예제에서 x는 레지스터 변수로 선언되었습니다. 레지스터 변수는 레지스터에 저장될 수 있다는 힌트를 컴파일러에 제공합니다. 하지만 컴파일러는 이 힌트를 반드시 따르지 않을 수 있으며, 실제로 레지스터에 변수를 저장할 것인지 여부는 컴파일러의 판단에 따라 결정됩니다. 레.. 2023. 7. 11.
C 언어 정적 변수(Static Variable) 정적 변수는 C 언어에서 사용되는 특별한 종류의 변수입니다. 정적 변수는 특정 함수나 블록의 범위에 한정되지 않고, 프로그램이 실행되는 동안 메모리에 유지됩니다. 이러한 특징으로 인해 정적 변수는 함수 호출과 관계없이 값이 유지되는 장점을 가지고 있습니다. 정적 변수의 선언과 사용 정적 변수는 함수 내부에서 선언될 수도 있고 함수 외부에서 선언될 수도 있습니다. 함수 내부에서 선언된 정적 변수는 해당 함수가 호출될 때마다 초기화되지 않고 이전 값이 유지됩니다. 예를 들어, 다음은 정적 변수의 선언과 사용의 예입니다. #include void myFunction() { static int staticVariable = 0; // 정적 변수 선언 printf("정적 변수 값: %d\n", staticVari.. 2023. 7. 11.
C 언어 전역 변수(Global Variable) 전역 변수는 C 언어에서 프로그램 전체에서 접근 가능한 변수입니다. 전역 변수는 모든 함수에서 공유되며, 값이 변경되면 해당 변경 사항이 프로그램 전체에 영향을 미칩니다. 전역 변수는 프로그램의 어디에서나 접근할 수 있으므로 데이터의 공유와 효율적인 데이터 관리를 위해 사용됩니다. 전역 변수의 선언과 사용 전역 변수는 함수 외부에 선언되어야 합니다. 전역 변수는 함수 내부에서도 사용할 수 있으며, 함수 호출 이후에도 값이 유지됩니다. 예를 들어, 다음은 전역 변수의 선언과 사용의 예입니다. #include int globalVariable = 100; // 전역 변수 선언 void myFunction() { printf("전역 변수 값: %d\n", globalVariable); } int main() .. 2023. 7. 11.