배열
배열을 사용하지 않은 경우
#include <stdio.h>
int main(void){
int subway_1 = 30;
int subway_2 = 40;
int subway_3 = 50;
printf("지하철 1호차에 %d명이 타고 있다.",&subway_1);
printf("지하철 2호차에 %d명이 타고 있다.",&subway_2);
printf("지하철 3호차에 %d명이 타고 있다.",&subway_3);
return 0;
}
배열을 사용한 경우
#include <stdio.h>
int main(void){
int subway_array[0] = 30;
int subway_array[1] = 40;
int subway_array[2] = 50;
for (int i =0; i<3; i++){
printf("지하철 %d호차에 %d명이 타고 있다.",i+1,subway_array[i]);
}
return 0;
}
배열의 특징
- 값 초기화 필수 (초기화하지 않을 시 쓰레기값이 들어감)
- 배열 크기 항상 상수 선언 필요
- 값을 하나라도 선언하면 나머지 값은 0으로 초기화
문자 / 문자열
문자 | 문자열 |
char c = 'A'; | char str[7] = "coding"; |
*문자열 긑에는 null문자 포함 (글자수 + 1 차지) |
포인터
포인터 사용 예시
#include <stdio.h>
int main(void){
int AA = 1;
printf("AA의 주소 : %d, 값 : %d",&AA,AA);
int * pointer; //포인터 변수
pointer = &AA;
printf("포인터의 방문 주소: %d, 값: %d",pointer, *pointer);
*pointer = *pointer * 3 // AA = AA * 3
printf("포인터가 값을 바꾼 주소: %d, 값: %d",pointer, *pointer);
printf("AA의 주소 : %d, 값 : %d",&AA,AA);
return 0;
}
더보기
[출력 결과]
AA의 주소 : 2310558, 값 : 1
포인터의 방문 주소 : 2310558, 값 : 1
포인터가 값을 바꾼 주소 : 2310558, 값 : 3
AA의 주소 : 2310558, 값 : 3
포인터와 배열의 관계
#include <stdio.h>
int main(void){
int arr[3] = {5,10,15};
int *ptr = arr;
for(int i = 0; i<3; i++){
print("포인터 ptr[%d] 의 값: %d\n",i,ptr[i]);
}
ptr[0] = 100;
ptr[1] = 200;
ptr[2] = 300;
for(int i = 0; i<3; i++){
print("포인터 ptr[%d] 의 값: %d\n",i,*(arr+i));
}
for(int i = 0; i<3; i++){
print("포인터 ptr[%d] 의 값: %d\n",i,*(ptr+i));
}
//*(arr+i) == arr[i] == *(ptr+i)
return 0;
}
더보기
[출력 결과]
포인터 ptr[1]의 값: 5
포인터 ptr[2]의 값: 10
포인터 ptr[3]의 값: 15
포인터 ptr[1]의 값: 100
포인터 ptr[2]의 값: 200
포인터 ptr[3]의 값: 300
포인터 ptr[1]의 값: 100
포인터 ptr[2]의 값: 200
포인터 ptr[3]의 값: 300
*과 &
* | & |
값 | 주소 |
*과 &을 동시 사용하면 상쇄됨
활용 (swap)
#include <stdio.h>
void swap(int * a, int * b);
int main(void){
int a = 10;
int b = 20;
swap(&a,&b);
printf("%d %d",a,b);
return 0;
}
void swap(int * a, int * b)
{
int temp = *a;
*a = *b;
*b = temp;
}
더보기
[출력 결과] 20 10
다차원 배열
#include <stdio.h>
int main(void){
int arr2[2][5]; //2차원 배열
//[0,0][0,1][0,2][0,3][0,4] -> arr2[0][0]
//[1,0][1,1][1,2][1,3][1,4]
int arr3[3][3][3]; //3차원 배열
arr2[2][5] = {{1,2,3,4,5},{1,2,3,4,5}};
arr3[3][3][3] = {
{
{1,2,3},
{1,2,3},
{1,2,3}
},
{
{1,2,3},
{1,2,3},
{1,2,3}
},
{
{1,2,3},
{1,2,3},
{1,2,3}
}
};
return 0;
}
1차원 배열과 기본적인 원리는 같다.
'정리 > C' 카테고리의 다른 글
[c] 연결 리스트 (0) | 2023.05.28 |
---|---|
[c] 연결 리스트 (0) | 2023.05.14 |
[c] 재귀 (0) | 2023.05.07 |
[c] 자료구조와 알고리즘의 이해 (0) | 2023.04.09 |
[c] c언어 시작하기 (0) | 2023.03.26 |
댓글