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

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

배열의 복사

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

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

728x90

'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, 선언과 초기화
Jminu
Jminu
    250x250
  • Jminu
    뇌 구조가 바이너리
    Jminu
  • 전체
    오늘
    어제
    • 분류 전체보기
      • C프로그래밍
        • 오류해결
        • 개인 공부
        • Programming Lab(학교수업)
        • MemoryTracker
      • C++
        • 개인 공부
      • 자료구조(Data Structure)
      • 컴퓨터 공학(Computer Science)
        • OS
        • 컴퓨터 구조
      • Web
      • Linux
      • 똥글
      • 백준
      • Git 학습
        • 오류해결
        • 학습중
      • Python
        • 오류해결
        • 개인 공부
      • Qualcomm 기업과제
  • 블로그 메뉴

    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Git
    동적 배열 스택
    그래서 컴퓨터는 어떻게 동작하나요?
    Batch OS
    C++
    rubik pi 3
    rubikpi3
    루빅보드
    원형 덱 구현
    c언어
    피보나치
    포인터
    자료구조
    버퍼
    이진 트리
    매개변수 포인터
    INIT
    커밋 아이디
    파일 입출력
    백준
    순환
    yolo
    파이썬
    스택
    동적메모리
    commit
    소수
    Branch
    가상 주소 공간
    커널
  • 최근 댓글

  • 최근 글

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

티스토리툴바