배열

    배열과 포인터의 관계 (2)

    배열과 포인터의 관계 (2)

    배열명과 포인터의 차이 포인터가 배열명처럼 쓰이기는 하지만 서로 다른 점이 더 많다 차이점 1. sizeof 연산의 결과가 다르다 배열명에 사용하면 배열 전체의 크기를 구하고 포인터에 사용하면 포인터 하나의 크기를 구한다 따라서 배열명을 포인터에 저장하면 포인터로 배열 전체의 크기를 확인하는 것은 불가능하다 int ary[3]; int* pa = ary; sizeof(ary) // 12바이트, 배열 전체 크기 sizeof(pa) // 4바이트, 포인터 하나의 크기 차이점 2. 변수와 상수의 차이가 있다 포인터는 그 값을 바꿀 수 있지만 배열명은 상수이므로 값을 바꿀 수 없다 즉, 포인터 pa에 1을 더하여 다시 pa에 저장할 수는 있으나, 배열명 ary는 1을 더 하는 것은 가능하고 그 값을 다시 저장하..

    배열과 포인터의 관계 (1)

    배열과 포인터의 관계 (1)

    배열명으로 배열 요소 사용하기 주소는 정수처럼 보이지만 자료형에 대한 정보를 갖고 있는 특별한 값이다 주소 + 정수 --> 주소 + (정수 + 주소를 구한 변수의 크기) ==> 배열명은 첫 번째 배열요소의 주소 값이다 #include int main(void) { int ary[3]; int i; *(ary + 0) = 10; *(ary + 1) = *(ary + 0) + 10; // ary[1] = ary[0] + 10 printf("세 번째 배열 요소에 키보드 입력 : "); scanf_s("%d", ary + 2); // ary[2]가 세 번째 배열 요소이므로 &를 사용하여 입력, ary + 2는 &ary[2]와 같다 for (i = 0; i < 3; i++) { printf("%5d", *(ary..

    문자를 저장하는 배열

    문자를 저장하는 배열

    char형 배열의 선언과 초기화 char형 배열을 선언할 때 저장할 문자열의 길이보다 최소한 하나 이상 크게 배열을 선언 여분의 공간이 필요한 이유 ==>널 문자 (\0)를 저장하기 위해서 1) 문자 상수로 하나씩 초기화 char str[80] = {'a', 'p', 'p', 'l', 'e', 'j', 'a', 'm'}; ==> 이렇게 해도 가능하지만 쉽지 않다 2) 문자열 상수로 한 번에 초기화 char str[80]= "applejam"; ==> 문자열 초기화는 대부분 이렇게 한다 널 문자의 용도 널 문자란 char형 배열에 저장된 0을 의미 문자열의 끝을 표시 *char형 배열 선언 시 초기화하지 않은 경우 char str[80]; // 배열 선언, 초기화 아직 안됨 str[0] = 'a'; // ..

    배열의 선언과 사용

    배열의 선언과 사용

    배열의 선언 배열 또한 다른 자료형처럼 선언을 통해서 저장 공간을 확보하고 한 번에 변수를 여러 개 선언한다 int형 변수 5개를 하나씩 선언하는 것의 크기 = 전체 저장 공간의 크기 ==> 변수는 각각의 공간에 이름을 지칭한다 ==> 배열은 메모리에 연속된 공간이 할당되며, 하나의 이름을 사용한다 ==> 배열은 각 저장 공간을 이름과 첨자로 구분하고 첨자는 0부터 시작한다 배열의 사용 ==> 배열을 선언할 때 대괄호 ([])는 전체 개수를 의미 ==> 배열 요소를 사용할 때 대괄호 ([])는 각 요소가 배열에서 몇 번째에 있는지를 의미 *배열의 첨자가 사용 범위를 벗어난다면 컴파일러가 경고 메세지를 알려주기도 하지만 에러 메세지를 표시하지 않을수도 있어서 버그를 잡기가 쉽지 않아진다 처음부터 사용할 때..