C언어 - 배열의 복사, 비교

2022. 7. 4. 16:06·C프로그래밍/개인 공부

배열의 복사

1
2
3
4
5
6
7
8
9
10
11
12
13
#include<stdio.h>
 
#define SIZE 5
 
int main(void)
{
    int a[SZIE] = {1, 2, 3, 4, 5};
    int b[SZIE];
 
    b = a; //복사 이렇게 하면 안됨.
 
    return 0;
}
Colored by Color Scripter
cs

이렇게 하면 배열이 복사되지 않는다.

배열의 이름은 배열이 있는 '주소'이기 때문이다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<stdio.h>
 
#define SIZE 5
 
int main(void)
{
    int a[SIZE] = {1, 2, 3, 4, 5};
    int b[SIZE];
    int i;
 
    for(i=0; i<SIZE; i++){
        b[i] = a[i];
    }
 
    return 0;
}
Colored by Color Scripter
cs

for문으로 배열b의 첫번째 인덱스부터 하나하나 대입을 해줘야한다.


배열의 비교

만약 배열a와 배열b를 비교한다고 가정해보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<stdio.h>
#define SIZE 5
 
int main(void)
{
    int a[SIZE] = {1, 2, 3, 4, 5, 6};
    int b[SZIE] = {1, 2, 3, 4, 5, 6};
 
    if(a == b)
        printf("같다.");
    else
        printf("다르다");
 
    
    return 0;
}
Colored by Color Scripter
cs

이렇게 생각하기 쉬운데 이는 틀렸다. why? 배열의 이름은 배열이 저장된 메모리의 주소이기때문에 주소를 비교하게 되는 것이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<stdio.h>
#define SIZE 5
 
int main(void)
{
    int a[SIZE] = {1, 2, 3, 4, 5, 6};
    int b[SIZE] = {1, 2, 3, 4, 5, 6};
    int i;
    
 
    for(i=0; i<SIZE; i++){
        if(a[i] != b[i]){
            printf("다름");
            break;
        }
    }
    
    return 0;
}
Colored by Color Scripter
cs

배열의 복사와 마찬가지로 하나하나 비교를 해야한다.

'C프로그래밍 > 개인 공부' 카테고리의 다른 글

C언어 - 쉽게 풀어쓴 C언어 express 10장 배열 실습문제(짝수번)  (0) 2022.07.13
C언어 - 정렬  (0) 2022.07.06
C언어 - 배열과 함수  (0) 2022.07.06
C언어 - 배열요소의 개수 계산(sizeof)  (0) 2022.07.04
C언어 - 포인터1, 선언과 초기화  (1) 2022.05.25
'C프로그래밍/개인 공부' 카테고리의 다른 글
  • C언어 - 정렬
  • C언어 - 배열과 함수
  • C언어 - 배열요소의 개수 계산(sizeof)
  • C언어 - 포인터1, 선언과 초기화
Minu Jin
Minu Jin
정보의 바다
  • Minu Jin
    뇌 구조가 바이너리
    Minu Jin
  • 전체
    오늘
    어제
    • 분류 전체보기
      • C프로그래밍
        • 오류해결
        • 개인 공부
        • Programming Lab(학교수업)
        • MemoryTracker
      • C++
        • 개인 공부
      • 자료구조(Data Structure)
      • ARM arch
        • Cortex-M
        • FreeRTOS
      • 컴퓨터 공학(Computer Science)
        • OS
        • 컴퓨터 구조
      • Qualcomm 기업과제
      • Linux
        • start_contribute()
        • start_analyse()
      • Web
      • 똥글
      • 백준
      • Git 학습
        • 오류해결
        • 학습중
      • Python
        • 오류해결
        • 개인 공부
  • 블로그 메뉴

    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    파이썬
    C++
    토발즈
    순환
    Qualcomm
    피보나치
    arm
    시스템콜
    Git
    커널
    yolo
    파일 입출력
    커널 기여
    c언어
    스택
    리눅스
    commit
    Branch
    자료구조
    드라이버 분석
    앤드류모튼
    이진 트리
    동적메모리
    rubik pi
    포인터
    rubikpi3
    버퍼
    소수
    INIT
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Minu Jin
C언어 - 배열의 복사, 비교
상단으로

티스토리툴바