scanf의 보안 취약점
·
Language/C
scanf 함수의 정의 및 동작 메커니즘 scanf 관련 주요 보안 취약점 및 로직 우회 종합 요약 및 방어 전략
연결리스트
·
Language/C
노드라는 개별 요소들이 포인터로 연결된 동적 자료 구조이다. 배열과 달리 연속된 메모리 공간을 필요로 하지 않으며 크기를 동적으로 조절할 수 있다.  예시 ) 단일 연결 리스트  struct Node* next를 이용해 다음 노드의 주소를 저장하는 단일 연결 방식  #include #include // 노드 구조 정의typedef struct Node { int data; struct Node* next;} Node;// 새로운 노드 생성Node* createNode(int data) { Node* newNode = (Node*)malloc(sizeof(Node)); newNode->data = data; newNode->next = NULL; return newNode;..
동적 할당
·
Language/C
컴퓨터 프로그래밍에서 실행 중(런타임)에 사용할 메모리 공간을 할당하는 것malloc 또는 calloc을 호출하게 되면 힙 영역에 필요한 만큼의 메모리 공간을 확보하고 이후 반환 타입으로 메모리 공간의 시작위치를 포인터로 반환한다. 또한 할당된 메모리를 어떤 목적에 사용할지 함수에서 판단하기 어렵기 때문에 return 타입은 void* 형을 return하며 반환 받는 쪽에서 타입 캐스팅을 통해 사용해야 한다.  int *arr=(int *)malloc(10*sizeof(int));int *arr=(int *)calloc(10,sizeof(int)); // 둘 다 같은 코드  메모리 누수 int *a = malloc(5); // 5byte 메모리 공간 선언int *b = malloc(10); // 10b..
구조체
·
Language/C
구조체 선언#include struct student //구조체 선언 방법 { int age; char phone_number[14]; int s_id;};int main(){ struct student goorm = { .age = 20, .phone_number = "010-1234-5678", 10 }; struct student codigm = { 22, "010-8765-4321"}; //main에서 한 번더 선언 필요, .age=20 또는 22 두가지의 방식으로 초기화 가능 //초기화 하지 않은 값은 0이 들어가있음 printf("나이 : %d, 번호 : %s, 학번 : %d\n", goorm.age, goorm.phone_number, goorm.s_id); printf("나이 : %..
포인터
·
Language/C
개념 변수의 주소값 저장 int *p=NULL; //*의 위치는 상관 없음 int* p, int * p모두 가능 int num=15p=# 포인터 변수의 크기는 모두 동일하다. 자료형으로 선언하는 이유는 가리키는 주소의 값이 어떤 자료형을 가지는지를 알려주기 위해서이다.  참조 연산자9 참조 연산자(*)는 포인터나 주소의 앞에 사용하며 포인터가 가리키는 주소에 저장된 값을 반환 int *p = NULL; int num = 15; p = # printf("포인터 p값 num값 : %d %d\n", *p); //15 15 *p += 5; printf("포인터 p값 num값 : %d %d\n", *p); //20 20 (*p)++; printf("포인터 p값 num값 : %d %d\n..
함수
·
Language/C
[반환형int] [함수명addArray] (매개변수int arr[],int len){ [호출 시 작동될 함수 내부 코드] int i; int result = 0; for(i = 0; i
조건문
·
Language/C
if elseif(){}else if(){}else{} breakwhile(1){ if(i == num) { break; printf("반복문을 빠져나가자!"); } i++;}break 를 만나면 반복문을 바로 빠져 나가므로 문구가 출력되지 않는다.  continuefor(int i=0; icontinue는 반복문을 완전 빠져나가는 break와 달리 현재 상태를 스킵하는것 i가 짝수일때 반복문은 스킵되므로 13579가 출력된다.  switch switch(input){ case a: input과 a가 같을 때 실행 break; //break를 넣지않으면 밑의 모든 case 실행 case b: input과 b가 같을 때 실행 default: 같지 않을 때 실행} 특정한 정수 값이나 문..
배열과 문자열
·
Language/C
배열 배열 선언 선언과 동시에 초기화 int arr1[5] = {1, 33 , 47, 102, 155}; 초기화 하지 않음 int arr2[5] = {}; 0번째 값을 5, 1번째값을 10으로 초기화, 나머지는 0으로 초기화  int arr3[5] = {5, 10}; 모두 0 으로 초기화 int arr5[5]; 배열의 크기가 4로 정해지면서 자동으로 초기화int arr6[] = {11, 22 , 33, 44};  배열의 사이즈 int arr[]={1,2,3,4,5,6};sizeof(arr)=24 // int형이므로 4byte*6=24sizeof(arr)/sizeof(arr[0])==6 // 배열 길이  문자열컴퓨터는 숫자에 문자를 대응시키는 방식으로 문자를 표현한다.  아스키 코드  아스키 코드는 8비트..
-->
loading