[열혈C] Chapter13 - 예제

김광일·2023년 2월 15일
0

열혈C

목록 보기
7/8
  • ArrayNameType.c
#include <stdio.h>

int main(void){

    int arr[3] = {0, 1, 2};

    printf("배열의 이름 : %p \n", arr);
    printf("첫 번째 요소 : %p \n", &arr[0]);
    printf("두 번째 요소 : %p \n", &arr[1]);
    printf("세 번째 요소 : %p \n", &arr[2]);
    // arr = &arr[i]; // 이 문장은 컴파일 에러를 일읜다.
    // %p 는 주소 값의 출력에 사용되는 서식문자이다.
    return 0;
}
  • ArrayNamePointerOperation.c
#include <stdio.h>

int main(void){

    int arr1[3] = {1, 2, 3};
    double arr2[3] = {1.1, 2.2, 3.3};

    printf("%d %g \n", *arr1, *arr2);
    *arr1 += 100;
    *arr2 += 120.5;

    printf("%d %g \n", arr1[0], arr2[0]);
    return 0;
}
  • ArrayNameIsPointer.c
#include <stdio.h>

int main(void){

    int arr[3] = {15, 25, 35};
    int * ptr = &arr[0];

    printf("%d %d \n", ptr[0], arr[0]);
    printf("%d %d \n", ptr[1], arr[1]);
    printf("%d %d \n", ptr[2], arr[2]);
    printf("%d %d \n", *ptr, *arr);    

    ptr[0] += 20;
    printf("%d \n", ptr[0]);

    printf("\n");

    int num = 5;
    int *ptr2 = &num;

    printf("%d \n", num);
    printf("%d !\n", *ptr2);

    *ptr2 += 5;

    printf("%d \n", num);
    printf("%d !\n", *ptr2);

    return 0;
}
  • PointerOperationResult.c
#include <stdio.h>

int main(void){

    int * ptr1 = 0x0010;
    double * ptr2 = 0x0010;

    printf("%p %p \n", ptr1+1, ptr1+2); // 4가 증가하고 8이 증가한다.
    printf("%p %p \n", ptr2+1, ptr2+2); // 8이 증가하고 16이 증가한다.

    printf("%p %p \n", ptr1, ptr2);
    ptr1++; // 4가 증가한다.
    ptr2++; // 8이 증가한다.

    printf("%p %p \n", ptr1, ptr2);

    return 0;
}
  • PointerBaseArrayAccess.c
#include <stdio.h>

int main(void){

    int arr[3] = {11, 22, 33};
    int * ptr = arr; // int * ptr = &arr[0] 과 같은 문장
    printf("%d %d %d \n", *ptr, *(ptr+1), *(ptr+2));

    printf("%d ", * ptr); ptr++; // printf함수 호출 후, ptr++ 실행
    printf("%d ", * ptr); ptr++; 
    printf("%d ", * ptr); ptr--; // printf함수 호출 후, ptr-- 실행
    printf("%d ", * ptr); ptr--; 

    printf("%d ", *ptr); printf("\n");

    return 0;
}
  • TwoStringType.c
#include <stdio.h>

int main(void){

    char str1[] = "My String";
    char * str2 = "Your String";
    printf("%s %s \n", str1, str2);

    str2 = "Our String";
    printf("%s %s \n", str1, str2);

    str1[0] = 'X'; // 문자열 변경 성공!
    str2[0] = 'X'; // 문자열 변경 실패!

    printf("%s %s \n", str1, str2);
    return 0;
}
  • PointerArray.c
#include <stdio.h>

int main(void){

    int num1 = 10, num2 = 20, num3 = 30;
    int * arr[3] = {&num1, &num2, &num3};

    printf("%d \n", *arr[0]);
    printf("%d \n", *arr[1]);
    printf("%d \n", *arr[2]);

    return 0;
}
profile
개발을 꿈꾸는 사람입니다.

0개의 댓글