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;
}
|
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;
}
|
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;
}
|
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;
}
|
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 |