WEEK 05 리눅스, C언어 TIL(4월12일 토요일)

Devkty·2025년 4월 13일
0

오늘 아침의 코어타임에는 내가 포인터와 구조체에 대한 개념을 팀원분들에게 설명했다.
다른 팀원분들의 설명을 듣고 내가 조사한 학습에 보충이 필요해서 노션에 적어두었다.
1번 문제도 잘 안풀리는데, 개념도 제대로 안되어 있어서 그런지 머리가 아프다. 이랫다 저랫다하는 느낌이다.

코어타임 보충 내용

포인터에서의 scanf를 확인해보자.

C프로그램(구조)

#include <stdio.h> 지시자(입출력 라이브러리 호출)
int main(void){

main함수는 필수 적으로 들어가야함.
void는 입력값 요구 없을 시 사용.
printf는 문자열 리터럴 출력.
;세미콜론은 컴퓨터가 코드가 어디서 종료되는 지 판단하는 기준

출력시 자료형

%d → int
%f → float
%s → string

문자열과 문자는 다르기 때문에 차이를 조사해보자.

매크로

정의: 상수 이름을 정의
#define AGE(10); (define은 전처리 지시자, 정의시 소괄호 사용)
식별자는 소문자이다.

포인터 개념을 바라보는 새로운 시각

x: 함수값
&x: 주소값

화살표를 선언했는가?
p: 화살표를 선언했다.(주소값 조회할)
*p: 화살표로 특정값을 가져올것

배열에서의 하나의 값 표시법

배열 시작 주소+ 자료형 x 인덱스(i)

포인터는 왜 쓰는가?

  1. 메모리에 저장을 편하게 쓰기 위해.
  2. 자료형을 합해서 정확하게 자료구조 값을 지정할 수 있다.
  3. C언어를 쓰는 데에도 이러한 이유가 있다. 메모리를 아주 세세한 단위별로 관리하기 위해서 효율적인 메모리 관리를 위해 사용한다.
    파이썬과 같은 경우는 성능 좋은 컴퓨터에서 메모리 몇 바이트씩 대충 잡아서 쓴다.(메모리가 큼)

이중 포인터 쓰는 이유 (케이스 중 한개)

배열에서 작은 하나까지 선택하기 위해서 쓴다.
예를 들어 배열이[dog, apple, home]일때
*p는 dog만 뺼수 있는데, **p를 쓰면 d만 뺄 수 있다.
각하나당의 세세한 값들이 메모리에 저장되기 때문이다.

C++에선 STL이 있다.
깊은 참조, 얅은 참조?(포인터, 매개변수 줄때)
C언어를 배운이유, CCACP을 배운 이유

가상메모리를 어떻게 크게 지정하는가?

포인터가 어떤걸 지정했을때 mmu가 실제주소로 주소를 계산한다.
계층 구조가 있음. mmu가 다음과 같은 순서로 값이 있는지 스캔 확인, 레지스터 → 캐시 → 램 → HDD(이걸 하나의 큰 메로리를 본다)
캐시히트를 수행한다.
우리가 배울땐 모두 가상메모리로 계산한다.

15:00 ~ 18:00

점심식사를 마치고 첫번째 C코드를 분석하고, 알럼나이분들과 이야기하는 시간을 가졌다.
알럼나이 관련된 내용은 따로 포스팅하겠다.

19:00 ~ 22:30

일단 1번문제 해보고 다시 개념을 잡을 것이다.
지금은 첫문제 C언어를 이해중이다. 이해는 거의 다 했다. 구조체에서 포인터를 호출하는 - > 기호가 섞여서 그런지 이해가 쉽게되지 않는다.

이런식으로 다 써보며 분석했는데 아직도 잘 모르겠다.
코드는 따로 포스팅하겠다.

profile
모든걸 기록하며 성장하고 싶은 개발자입니다. 현재 크래프톤 정글 8기를 수료하고 구직활동 중입니다.

0개의 댓글