CTRL + F 로 키워드 검색
본 글은 필자가 C언어를 공부하면서 쓰는 일종의 저장 노트입니다.
필자도 배우는 입장으로
필요하신 분 들은 적절히 사용하면 좋을 듯 하다.
비주기적 업데이트 예정
● 2차원 배열
※ int arr[세로길이][가로길이]
ex) int arr[2][3]
※ 2차원 배열 초기화 방법
int main(void)
{
int arr[4][4] = {
{1,2,3,4},
{5,6,7,8},
{0},
{1}
};
※ 행 단위로 초기화 해야함
※ 나머지는 0으로 초기화
int main(void)
{
int arr[4][4] = {
1,2,3,4,
5,6,7,
};
※ 1열1행부터 초기화
※ 길이 생략 선언 가능
ex) int avs[ ] [4] = {0,1,2,3,4,5}
단 세로 길이는 생략 불가
● 더블,트리플 포인터
※ 포인터 변수를 가리키는 포인터를 더블 포인터라 칭한다.
※ ***가 3개 포함이면 당연히 삼중 포인터 변수
● 배열의 포인터 형
int * arr1[20] // 길이가 20인 int형 포인터 배열
int arr[20] // arr은 int형 포인터
● 2차원 배열이름 포인터
2차원 배열의 이름은 더블 포인터 형이 아니다.
2차원 배열에서 만약int array[2][4] 와 같이 있으면array는 첫 번째 요소를 가르키는 동시에 배열 전체를 의미array[0]는 첫 번째 요소를 가르키는 동시에 1행만을 의미차이점을 꼭 숙지하자.
2차원 배열에서의 포인터 형은 배열의 가로 길이에 따라 달라진다.int ar[2][3]ar, ar+1 의 차이는 주소 값 차이는 12int arar[3][2] arar,arar+1 의 주소 값 차이는 8
int (*ptr) [5]의 의미ptr : 포인터 변수int : int형5 : 한 번에 5칸씩 건너뜀
int * qwe[4]; // 포인터 배열 -> int형 포인터 변수들로 이루어진 포인터 배열
int (*qwe1) [4]; 배열 포인터 -> 가로길이가 4인 2차원 배열을 가리키는 용도의 포인터 변수
함수인자로의 전달
#include <stdio.h>
void Func(int parr[][4], int parr_2[][5])
{
printf("test \n")
}
int main(void)
{
int arr[2][4];
double arr2[4][5];
Func(arr, arr2);
return 0;
}
int (*parr)[4]
int parr[][4]
파라미터 선언에서 두 표현은 동일 의미
arr[2][1]=4; = (*(arr+2))[1]=4;
1번째식 arr[2]를 A로 치환
A[1]=4;
*(A+1)=4;
*(arr[2]+1)=4;
여기서 arr[2] = *(arr+2)
*(*(arr+2)+1) =4; 라는 식이 나온다.
● 함수 포인터
배열의 이름은 배열의 시작주소 값을 의미
함수의 이름도 함수가 저장된 메모리 공간의 주소 값을 의미 (상수 형태)
함수 포인터 변수 : 함수의 주소 값을 저장하기 위한 포인터 변수
int Func (int num)
반환형 : int
파라미터 선언 : int num
Func : 함수의 주소 값을 의미하는 상수형태의 함수 포인터
함수이름의 포인터 형은 반환형과 파라미터의 선언을 통해서 결정
함수 포인터 변수 선언 방법
int (*FUNC) (int)
반환형 , 포인터 , 매개변수 선언
순으로 구분
● void
void형 포인터 변수는 무엇이든지 담을 수 있다
ㄴ포인터 연산 불가 / 값의 변경과 참조도 불가능 하다. (type이 정해지지 않음)
'소프트웨어 | Software > 프로그래밍 | C언어 | C' 카테고리의 다른 글
내가 보려고 만드는 C언어 정보 모음 #파일 입출력 #스트림 #버퍼 #문자열 함수 (0) | 2023.06.01 |
---|---|
윤성우 열혈 C 프로그래밍 도전! 프로그래밍 3 답 (0) | 2023.05.22 |
윤성우 열혈 C 프로그래밍 도전! 프로그래밍 2 답 (0) | 2023.05.03 |
내가 보려고 만드는 C언어 정보 모음 #배열 #포인터 (0) | 2023.04.25 |
윤성우 열혈 C 프로그래밍 도전! 프로그래밍 1 답 (0) | 2023.04.20 |