전체 글 115

[c언어] 구조체 선언 과 초기화

배열과 구조체 배열 : 같은 자료형의 데이터를 일렬로 모아둔 자료구조 형태 구조체 : 다른 자료형일 지라도 논리적으로 연결되는 데이터들을 모아둔 자료구조 형태 구조체의 선언 tagname 이라는 구조체가 만들어 졌다. (구조체의 형태만이 만들어 졌다. 메모리 공간을 차지 하지 않는다.) tagName 구조체형을 갖는 변수 ABC가 선언되었다. 이떄 구조체기억 장소를 할당하게 된다. 구조체를 선언할 때 반드시 struct 기워드를 붙여준다. 3. 위와 같이 구조체 를 정의함과 동시에 변수를 선언할 수 도있다. 이떄 만들어진 ABC는 전역 변수가 된다.

[c++] 구조체, 구조체 배열, 구조체 포인터, 패딩바이트, typedef

구조체란 지금까지 썼던 자료형을 일반 자료형이라고 한다. 구조체는 사용자 정의 자료형에 속한다. 일반적인 생김새는 다음과 같다. 구조체 : 임의의 자료형 요소를 조합하여 다시만든 자료구조 이다. 구조체 이름앞의 xyz를 구조체 태그 라고 한다. 안에 선언된 걸 구조체 멤버라고 한다. struct 구조체 명 { 자료형들 } 이런식으로 안의 구조체 멤버들을 선언을 한다. 여기서 주의해야 할 점은 char 형의 경우 char* 형으로 선언해주면 안되고, 배열의 크기를 명시해줘야지 에러가 나지 않는다. 구조체 선언 및 초기화 아래와 같이 구조체 변수를 선언 및 초기화 할 수 있다. 각각의 자료형에 맞게 넣어 줘야 한다. 다 넣어 주지 못한 멤버는 자동으로 0으로 초기화 된다. 구조체 멤버 닷 연산자를 사용하여 ..

프로그래밍/C++ 2021.09.30

[알고리즘]소수의 나열 (소수 구하기)

소수란? 소수 : 자기 자신과 1이외의 어떤 정수로도 나누어 지지 않는다. 즉, 2 ~ n-1 까지 나누려고 해도 나누어지지 않는 수이다. 1000이하의 소수 구하기 n이 소수인지를 검사하기 위한 for문 하나. 1과 본인의 값(1000)을 제외한 값으로 나눠주기 위해 모든 수를 차례로 스캔하는 for문 하나 안쪽 for 문에서 하나라도 나눠지는 수가 있다면 반복문을 중단하고 다음 수로 넘어간다. 나눠지는 수가 하나도 없다고 하면 마지막에는 결국 스캔한 값이랑 같아지게 되므로 i == j 조건을 추가 하여 출력해준다. 이 조건문은 안쪽 for문을 나왔을 때도 검사가 가능해야 하므로 for문의 초기화를 위한 선언은 for문 밖에서 정의 해준다. 위의 소수구하는 식의 문제점 1.n이 2또는 3으로 나누어 떨..

알고리즘 2021.09.30

[알고리즘]기수변환

기수란? 기수 : 수를 나타내는데 기초가 되는 수 10진법의 기수 : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 1의자리 : 9 10의자리 : 99 100의자리 : 999 까지 의 수를 나타낸다. 8진수의 기수: 0, 1, 2, 3, 4, 5, 6, 7 1의자리 : 7 10의자리 : 77 100의자리 : 777 까지 의 수를 나타낸다. 16진수의 기수 : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 , A, B, C, D, E, F 식전체를 평가 하기전에 피연산자의 값을 증가. 식전체를 먼저 평가하고 피연산자의 값을 증가. 기수변환 프로그램 다음은 기수로 변환하는 함수를 나타내었다. 반환할 숫자는 정수형태이기 때문에 unsigned 형식이어야 한다. n은 n진수로의 변환을 의미한다. dc..

카테고리 없음 2021.09.29

[알고리즘] 배열 요소 정렬 / 함수형식 매크로

배열요소 정렬 정수/정수 연산은 나머지를 버리고 정수부만 얻을 수 있다. 나머지 버리기에 매우 좋다. 배열요소의 앞뒤를 바꾸기와 순차적으로 정렬할 경우 같은 자료형의 새로운 변수를 사용하여 재배열 해준다. 가장 왼쪽 요소의 인덱스는 i 가장 오른쪽 요소의 인덱스는 n -1 -i 위그림 처럼 두값을 교환하는 과정을 함수형식 매크로로 구현하면 프로그램이 짧아지고 읽기도 쉬워진다. #define swap(type, x ,y) do{type t = x; x =y; y = t;} while(0) #define SQR(X) ((X)*(X)) 매크로 함수의 장단점 매크로 함수의 장점은 다음과 같습니다. 1. 매크로 함수는 단순 치환만을 해주므로, 인수의 타입을 신경 쓰지 않습니다. 2. 매크로 함수를 사용하면 여러 ..

알고리즘 2021.09.29

[알고리즘] 배열2

선언과 정의 선언 : 컴파일러에게 대상에 대한 정보만을 알려주어 메모리가 아직 할당되지 않는다. 정의 : 컴파일러에게 대상의 실제 내용을 생성하게 한다. 실제 내용을 생성하고 할당한다. 메모리 구조 데이터 영역: 프로그램 시작하면 할당하고 프로그램이 종료하면 메모리 해제 (전역변수, 정적변수) 스택 영역: 함수 호출시 생성되고 함수호출이 완료되면 사라짐 (지역변수, 매개변수) 힙영역 : 필요에 따라 동적메모리를 할당->프로그램이 실행되는 동안 (런타임 시점)결정해야하는 경우 최댓값 구하기 주사 : 아래처럼 배열의 요소를 하나씩 차례로 살펴보는 과정을 알고리즘 용어로 주사 라고한다. 즉, 스캐닝 한다는 말과 같다. 상수사용 최소화하기 위해 전역변수로 배열 사이즈를 선언하였다. 그냥 int N = 5라고 했..

알고리즘 2021.09.29

[알고리즘] 배열 개념

배열 자료구조 데이터 단위와 데이터 자체사이의 물리적 또는 논리적인 관계로 자료를 효율적으로 이용할 수 있도록 컴퓨터에 저장하는 방법. 데이터 단위 데이터를 구성하는 한 덩어리 배열 같은 자료형의 변수로 이루어진 요소가 모여 직선모양으로 줄지어 있는 자료구조. 배열의 요소 상수만 사용할 수 있다. 상수식 상수만을 포함하는 식으로 실행시점이 아닌 컴파일 시점에 할당 및 계산 된다. 배열 특징 각 요소는 단일로 선언한 int형 변수와 성질이 같기 때문에 각 요소에 int 형값을 자유롭게 대입하거나 제거 할 수있다. 배열의 자료형 int[5] 형 ( int [요소의 개수]형 )이다. int 형이 아니다. #define 을 사용하여 상수를 최소화 시킴 sizeod(a)는 전체 배열이 할당된 메모리 크기이고, s..

알고리즘 2021.09.29

[C++] 2차원 배열, 배열 포인터, 배열 초기화, 배열 매개변수

2차원 배열 기본형태 배열은 기본적으로 n차원까지 가능하다. 보통은 너무 복잡해서 3차원도 잘 안쓴다. int iArr2D[Y][X] = {1,2,3,4,5,6}; Y는 행을 X는 열을 나타낸다. int iArr[2][3]; --> 3칸짜리 배열이 2개 즉, iArr[3]이 2개 (2행3열) 바깥이 행에 접근한다. 맨 아래의 그림을 참고하면 이해하기 쉽다. 3차원 배열 기본형태 배열의 초기화 아래 그림처럼 2가지 방법으로 초기화가 가능하다. 이중 for문을 사용하여 초기화 진행 2차원 배열의 포인터 1차원 배열포인터 int* ptr = iArr2D 2차원 배열포인터 자료형(*변수명)[열의 크기] int(*ptr2D)[3] = iArr2D; 더보기 2차원배열의 원소는 1차원 배열을 뜻한다. 따라서 2차원배..

프로그래밍/C++ 2021.09.24