C언어/주차별 문제

[10주차] 포인터를 이용하여 배열의 값 변경하기

슈슈버거 2023. 6. 6. 16:55

문제


내가 작성한 코드

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

void change(int **ptr, int changevalue, int changeindex, int x); //change 함수 선언

int main() {
    int x; //배열의 개수 입력
    scanf("%d", &x);

    int num[x]; //배열 선언
    for(int i = 0; i<x; i++){
        scanf("%d", &num[i]);
    }

    int changeindex, changevalue; //바꿀 위치, 바꿀 값
    scanf("%d %d", &changeindex, &changevalue);

    int *ptr = &num; //포인터와 연결
    change(&ptr, changevalue, changeindex, x); //change 함수 호출

    for(int i = 0; i<x; i++){ //바뀐 배열 출력
        printf("%d ", *(ptr+i));
    }
    printf("\n");

    return 0;
}

void change(int **ptr, int changevalue, int changeindex, int x){ //change 함수 부분
    for(int i = 0; i<x; i++){
        if(i == changeindex){ //바꿔야 하는 index 도달시
            *(*ptr+i) = changevalue; //값 바꿔서 저장
        }
    }
}

배열의 일부만을 바꾸는 것이기에 주소 전체를 바꾸지 않도록 주의!

'C언어 > 주차별 문제' 카테고리의 다른 글

[10주차] 2차원 배열 정렬  (0) 2023.06.06
[10주차] 역방향 출력  (0) 2023.06.06
[10주차] 배열의 Swap  (0) 2023.06.06
[10주차] 이중포인터를 이용한 최솟값, 최댓값 구하기  (0) 2023.06.06
[8주차] 개미  (0) 2023.04.23