<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>FRACTAL</title>
    <link>https://steady-lee.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Mon, 11 May 2026 19:06:19 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>steadilee</managingEditor>
    <image>
      <title>FRACTAL</title>
      <url>https://tistory1.daumcdn.net/tistory/5360213/attach/2a617187cc4740d9a7fe436b01234b76</url>
      <link>https://steady-lee.tistory.com</link>
    </image>
    <item>
      <title>프로그래머스 SQL 문제풀이1</title>
      <link>https://steady-lee.tistory.com/65</link>
      <description>&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;대여 기록이 존재하는 자동차 리스트 구하기&lt;/h3&gt;
&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;SQL&quot; data-ke-language=&quot;SQL&quot;&gt;&lt;code&gt;MYSQL

SELECT DISTINCT B.CAR_ID
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FROM CAR_RENTAL_COMPANY_CAR A, CAR_RENTAL_COMPANY_RENTAL_HISTORY B
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WHERE A.CAR_ID = B.CAR_ID AND
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;A.CAR_TYPE = '세단' AND
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MONTH(B.START_DATE)= '10'
		ORDER BY 1 DESC;

ORACLE

SELECT DISTINCT B.CAR_ID
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FROM CAR_RENTAL_COMPANY_CAR A, CAR_RENTAL_COMPANY_RENTAL_HISTORY B
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WHERE A.CAR_ID = B.CAR_ID AND
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;A.CAR_TYPE = '세단' AND
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;EXTRACT(MONTH FROM B.START_DATE)= '10'
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ORDER BY 1 DESC;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;날짜 쿼리&lt;br&gt;&amp;nbsp;&amp;nbsp;- MYSQL&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- MONTH(), YEAR(),DAY()&lt;br&gt;&amp;nbsp;&amp;nbsp;- 오라클&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - 날짜에서 월만 추출하기 :&lt;br&gt; EXTRACT(MONTH FROM DATE_OF_BIRTH)= '3’&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기&lt;/h3&gt;
&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;SQL&quot; data-ke-language=&quot;SQL&quot;&gt;&lt;code&gt;-- 코드를 입력하세요
SELECT CAR_ID,&amp;nbsp;&amp;nbsp;MAX(CASE WHEN TO_DATE('2022-10-16','YYYY-MM-DD') BETWEEN START_DATE AND END_DATE THEN '대여중'
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ELSE '대여 가능' END)&amp;nbsp;&amp;nbsp;AS AVAILABILITY
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GROUP BY CAR_ID
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ORDER BY 1 DESC;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;br&gt;오랜 기간 보호한 동물(1)&lt;/h3&gt;
&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;SQL&quot; data-ke-language=&quot;SQL&quot;&gt;&lt;code&gt;SELECT NAME,DATETIME
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FROM ANIMAL_INS
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WHERE ANIMAL_ID NOT IN (SELECT ANIMAL_ID FROM ANIMAL_OUTS)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ORDER BY DATETIME FETCH FIRST 3 ROWS ONLY;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;오랜 기간 보호한 동물(2)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;- oracle&lt;/p&gt;
&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;SQL&quot; data-ke-language=&quot;SQL&quot;&gt;&lt;code&gt;SELECT ANIMAL_ID, NAME
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FROM(
SELECT&amp;nbsp;&amp;nbsp;A.ANIMAL_ID&amp;nbsp;&amp;nbsp;AS ANIMAL_ID, A.NAME AS NAME, A.DATETIME-B.DATETIME AS PERIOD
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FROM ANIMAL_OUTS A INNER JOIN ANIMAL_INS B
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ON A.ANIMAL_ID = B.ANIMAL_ID)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ORDER BY PERIOD DESC FETCH FIRST 2 ROWS ONLY;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;- mysql&lt;/p&gt;
&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;SQL&quot; data-ke-language=&quot;SQL&quot;&gt;&lt;code&gt;SELECT ANIMAL_ID
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , NAME
&amp;nbsp;&amp;nbsp;FROM (
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SELECT A.ANIMAL_ID
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , A.NAME
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , DATEDIFF(B.DATETIME, A.DATETIME) AS DATE_DIFF
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FROM ANIMAL_INS A
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ) A
 ORDER BY DATE_DIFF DESC
 LIMIT 2;&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Skill/SQL 이론</category>
      <author>steadilee</author>
      <guid isPermaLink="true">https://steady-lee.tistory.com/65</guid>
      <comments>https://steady-lee.tistory.com/65#entry65comment</comments>
      <pubDate>Thu, 9 Mar 2023 19:44:17 +0900</pubDate>
    </item>
    <item>
      <title>오라클 비밀번호 만료 시 재설정 및 기한 무제한으로 변경</title>
      <link>https://steady-lee.tistory.com/64</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;초기 비밀번호 설정 후 180일이 지나면 자동으로 비밀번호가 만료된다&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;그럴 땐, 아래와 같이 수행한다&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 명령 프롬프트창 실행&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2.&amp;nbsp; SQL plus 실행&lt;b&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. sys 계정 접속&lt;/h3&gt;
&lt;pre id=&quot;code_1677767683260&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;connect sys as sysdba

-비밀번호(sys) 입력&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4.&amp;nbsp; default 비번 만료 기한 확인&lt;/h3&gt;
&lt;pre id=&quot;code_1677767814617&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select * from dba_profiles where profile = 'DEFAULT';&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. default 비번 만료 기한 unlimited로 변경&lt;/h3&gt;
&lt;pre id=&quot;code_1677767838448&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;alter profile default limit password_life_time unlimited;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;6. 계정 LOCK 해제&lt;/h3&gt;
&lt;pre id=&quot;code_1677767863355&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;alter user 계정명 account unlock;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;7. 비밀번호 변경&lt;/span&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1677767514804&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; alter user 계정명 identified by 새비밀번호;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Skill/Oracle</category>
      <author>steadilee</author>
      <guid isPermaLink="true">https://steady-lee.tistory.com/64</guid>
      <comments>https://steady-lee.tistory.com/64#entry64comment</comments>
      <pubDate>Thu, 2 Mar 2023 23:38:21 +0900</pubDate>
    </item>
    <item>
      <title>포인터의 동적할당, 구조체</title>
      <link>https://steady-lee.tistory.com/63</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;포인터&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;포인터 : 주소값
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;포인터 변수&lt;/b&gt; : 주소를 담는 변수&lt;/li&gt;
&lt;li&gt;&lt;b&gt;포인터 상수&lt;/b&gt; : 주소를 담는 상수(배열)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;자료형*&lt;/b&gt; : 포인터 연산자&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffc9af;&quot;&gt;*&lt;b&gt;주소값:&lt;/b&gt; 참조 연산자&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;포인터의 초기값은 0&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;포인터를 사용하는 이유&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다른 영역에 있는 변수의 값을 수정하기 위해서&lt;/li&gt;
&lt;li&gt;함수는 한 개의 값만 리턴할 수 있으므로 포인터를 사용해서 값을 변경할 수 있다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;★ 동적 메모리 할당&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;필요한 헤더파일 : stlib.h&lt;/li&gt;
&lt;li&gt;동적 할당(dynamic allocation)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;동적 배열 할당&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;처음에 선언할 때 길이를 하드코딩한다고 해서 정적 배열 아님. malloc으로 만들었으므로 동적배열로 보는게 맞음&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1675991714968&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;자료형* 포인터명 = (자료형*)malloc(sizeof(자료형) * 길이) ; // 사용자가 입력하는 만큼 할당&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;동적배열 초기화(clear allocation) :&lt;/b&gt; 바이트를 초기화하는 것(초기값으로 만드는 것 아님!)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1675991731087&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;자료형* 포인터명 = (자료형*)calloc(길이,sizeof(자료형)) ;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;동적 배열 크기 변경(resize allocation)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;더 큰 배열을 만들면, (새로운 값을 넣거나 초기화하지 않으면) 새로 생긴 칸은 초기화되지 않고 쓰레기값이 담긴다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1675991746771&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;포인터명 = (자료형*)realloc(포인터명,sizeof(자료형)*길이) ;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;동적 메모리 해제(heap 메모리는 직접 해제해야한다)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;메모리를 해제하지 않으면 사라지지 않고 남아있기 때문에 꼭 반드시 free함수로 메모리 해제를 해야한다&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1675991776674&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;free(포인터명); // 동적할당한 주소값&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;개념확인 코드&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;포인터 동적할당으로 최대,최소값 구하기&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1675991969678&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void main(){
	int size = 0;
    int max = 0; min = 0;
    int* dAr= 0;
    
    printf(&quot;정수의 개수: &quot;);
    scanf_s(&quot;%d&quot;, &amp;amp;size) ;
    
    dAr = (int*)calloc(size,sizeof(int));
    
    for(int = 0;i&amp;lt;size;i++){
		printf(&quot;%d번째 정수 : &quot;, i+1);
        scanf_s(&quot;%d&quot;,dAr + i);
    }
    
    getMaxAndMin(dAr,size,&amp;amp;size,&amp;amp;min);
    
}

void getMaxAndMin(int* dAr, int size, int* max, int* min){
	*max = dAr[0];
    *min = dAr[0];
.
.
.
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;구조체(사용자 정의 타입)&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;추상적 개념. &amp;rarr; 구체화한 게 구조체 변수&lt;/li&gt;
&lt;li&gt;공통요소(멤버 변수)로 구조화(구체화) 시켜놓은 것&lt;/li&gt;
&lt;li&gt;&lt;b&gt;목적&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;반복되는 공통요소 쉽게 관리&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;구조체 선언&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1675991870512&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;1. 사용시 struct 구조체 이름 
struct 구조체 이름{ 자료형 멤버변수명, ... }; 

2. 사용시 구조체 별명 사용 가능 
typedef struce 구조체이름{ 자료형 멤버변수명, ... } 구조체 별명;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;선언 시 주의사항&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;함수 밖에서 선언해야 한다&lt;/li&gt;
&lt;li&gt;구조체 선언 시 멤버변수에 초기값을 넣을 수 없다. (예 : int a = 0 와 같은 것 안됨)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;구조체 사용&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1675991941847&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;struct 구조체이름 변수명; 
변수명.멤버변수명 = 값;   

//초기값 설정 
struct 구조체이름 변수명 = {값,...};  // -&amp;gt; struct를 매번 앞에 사용하는 것이 불편함 

// typedef으로 선언했다면 아래와 같이 사용 
구조체별명 변수명;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;구조체 예제&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1675992016687&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt; 
// L을 3이라고 define 해높으면 아래에서 계속 하드코딩하지 않고 값 변경 가능 
#define L 3 

typedef struct Fruit{ 
	char name[200]; 
	int price; 
    char season[200]; 
    }F;
    
    
void main(){
	F fruits[L] = {
    	{&quot;사과&quot;,1500,&quot;가을&quot;},
        {&quot;배&quot;,3500,&quot;겨울&quot;},
        {&quot;바나나&quot;,500,&quot;여름&quot;}
    };
    
    for (int i = 0;i&amp;lt;L;i++){
    	printf(&quot;%s,%d,%s \n&quot;, fruits[i].name, fruits[i].price, fruits[i].season);
    }&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;구조체 안의 포인터에 접근할 때 :&amp;nbsp; -&amp;gt;&amp;nbsp;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;구조체 F 안의 {} 에 접근하는 것이므로 - &amp;gt; 또는 [i].변수명&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Skill/C,C#,C++</category>
      <author>steadilee</author>
      <guid isPermaLink="true">https://steady-lee.tistory.com/63</guid>
      <comments>https://steady-lee.tistory.com/63#entry63comment</comments>
      <pubDate>Fri, 10 Feb 2023 10:33:02 +0900</pubDate>
    </item>
    <item>
      <title>함수와 저장 기억 부류</title>
      <link>https://steady-lee.tistory.com/62</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;함수&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이름()&lt;/li&gt;
&lt;li&gt;단, 키워드 뒤에 소괄호가 있으면 함수가 아니다
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;if(), switch(), for(), while()&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;함수의 선언&lt;/h3&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;리턴타입 함수명(자료형 매개변수1,...)
{
			실행할 문장;
			return 리턴값;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;리턴 타입&lt;/b&gt; : 리턴값의 타입을 작성한다. 만약 리턴값이 없다면 void 라는 타입 작성&lt;/li&gt;
&lt;li&gt;&lt;b&gt;함수명 :&lt;/b&gt; 동사로 작성한다&lt;/li&gt;
&lt;li&gt;&lt;b&gt;매개변수 :&lt;/b&gt; 생략이 가능하지만 외부에서 값을 전달받기 위해서는 반드시 자료형과 순서에 맞게 선언해줘야 함&lt;/li&gt;
&lt;li&gt;&lt;b&gt;실행할 문장 :&lt;/b&gt; main 함수에서 작성해왔던 소스코드&lt;/li&gt;
&lt;li&gt;&lt;b&gt;return :&lt;/b&gt; 생략가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;함수 선언과 사용 구분
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;{}가 있으면 선언, {}가 없으면 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;함수 선언 시 주의사항
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;함수 안에 다른 함수 선언 불가&lt;/li&gt;
&lt;li&gt;함수 사용은 반드시 함수 안에서 사용 해야한다.&lt;/li&gt;
&lt;li&gt;함수 사용할 때, 선언부 소스코드 밑에 있으면 인식이 안되기 때문에, 사용하는 부분 위에 선언해야함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;함수 선언 시 순서&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;함수명을 생각한다&lt;/li&gt;
&lt;li&gt;매개변수를 생각한다&lt;/li&gt;
&lt;li&gt;실행할 문장을 작성한다&lt;/li&gt;
&lt;li&gt;리턴 값을 작성한다&lt;/li&gt;
&lt;li&gt;리턴 타입을 결정한다&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;함수의 사용&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리턴 값이 있다면, 통채로 리턴값으로 본다&lt;/li&gt;
&lt;li&gt;리턴 값이 없다면, 값으로 봐서는 안된다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;함수를 사용하는 이유&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;재사용, 특정성을 부여해서는 안된다&lt;/li&gt;
&lt;li&gt;소스코드 간결화&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;리턴을 해야할 때&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용하는 부분에 작업의 결과를 전달해야할 때&lt;/li&gt;
&lt;li&gt;함수 안에서 모든 작업이 끝나지 않을 때&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;리턴을 안할때&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용하는 부분에 작업의 결과를 전달해야할 필요가 없을 때&lt;/li&gt;
&lt;li&gt;함수 안에서 모든 작업이 끝날 때&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;static 과 extern 변수&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;외부 파일의 전역 변수 사용 할 때 : extern
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다른 파일에 있는 static 변수는 extern으로 가져와서 사용할 수 없다&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;전역변수 생성 시 static을 사용하면, 해당 파일에서만 사용하는 변수가 된다(예시 : static int num = 1)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;저장 기억 부류(Storage class)&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 23.3721%;&quot;&gt;stack &lt;br /&gt;지역변수, &lt;br /&gt;매개변수 할당되는 공간&lt;/td&gt;
&lt;td style=&quot;width: 16.6279%;&quot;&gt;heap &lt;br /&gt;&lt;br /&gt;동적메모리&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;data 영역1&lt;br /&gt;&lt;br /&gt;전역변수&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;data 영역2&lt;br /&gt;&lt;br /&gt;지역변수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;초기화&lt;/td&gt;
&lt;td style=&quot;width: 23.3721%;&quot;&gt;직접&lt;/td&gt;
&lt;td style=&quot;width: 16.6279%;&quot;&gt;직접&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;자동&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;자동&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;생명주기&lt;/td&gt;
&lt;td style=&quot;width: 23.3721%;&quot;&gt;} 만나면 해제&lt;/td&gt;
&lt;td style=&quot;width: 16.6279%;&quot;&gt;free() 쓰면 해제&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;프로그램 종료&lt;/td&gt;
&lt;td style=&quot;width: 20%;&quot;&gt;프로그램 종료&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Skill/C,C#,C++</category>
      <author>steadilee</author>
      <guid isPermaLink="true">https://steady-lee.tistory.com/62</guid>
      <comments>https://steady-lee.tistory.com/62#entry62comment</comments>
      <pubDate>Fri, 10 Feb 2023 10:09:13 +0900</pubDate>
    </item>
    <item>
      <title>2차원배열</title>
      <link>https://steady-lee.tistory.com/61</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;2차원 배열 : 배열 안의 배열&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2차원 배열 선언&lt;/h3&gt;
&lt;pre class=&quot;markdown&quot;&gt;&lt;code&gt;자료형 배열명[행][열] = {{값1,값2,...},{값3,값4,..},{값5,값6,...}};
자료형 배열명[행][열] = {초기값, } ;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2차원 배열 사용&lt;/h3&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;int arrData[2][3] = {0. }

*(배열명+9)+2  // 주소값
*(*(배열명+2))+8  //값
*(*(배열명)+2) = 10  // 0행 3열
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;코드로 확인하기 : 배열 출력하기&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1675991072961&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;


void main(){
    int arrData[2][3] = {{2,3,4},{5,6,7}};
    
    for (int i=0;i&amp;lt;6;i++){
        if(i%3==0) {printf(&quot;\n&quot;); }  // 행 별 줄바꾸기
        printf(&quot;%d&quot;,arrData[i/3][i%3]);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;이중 for문(Nested For)으로 2차원 배열 출력하기&lt;/h3&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;

int main()
{
	int arr[3][3] = { {3,5,4},{2,6,7},{8,10,1} };
	int i, j;
	for (i = 0; i &amp;lt;= 2; i++) {
		for (j = 0; j &amp;lt;= 2; j++) {
			printf(&quot;%d &quot;, arr[i][j]);
		}
		printf(&quot;\\n&quot;);
	}
	return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Skill/C,C#,C++</category>
      <author>steadilee</author>
      <guid isPermaLink="true">https://steady-lee.tistory.com/61</guid>
      <comments>https://steady-lee.tistory.com/61#entry61comment</comments>
      <pubDate>Fri, 10 Feb 2023 10:04:49 +0900</pubDate>
    </item>
    <item>
      <title>문자열</title>
      <link>https://steady-lee.tistory.com/60</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문자열&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;pre class=&quot;aspectj&quot;&gt;&lt;code&gt;char 배열명[길이] = {'문자','문자',...};
char 배열명[길이] = &quot;문자열&quot;;    // 쌍따옴표 주의

char 배열명[길이] =&quot;&quot;; //  빈 문자열
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;널 문자('\0')&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문자열의 끝을 알려주는 문자&lt;/li&gt;
&lt;li&gt;널 문자가 있어야만 정상적으로 문자열을 읽어올 수 있다&lt;/li&gt;
&lt;li&gt;문자 배열의 시작 주소를 알려주면 &lt;b&gt;널문자 전까지 읽게 된다&lt;/b&gt;
&lt;pre class=&quot;cpp&quot;&gt;&lt;code&gt;void main(){
		char nation[6] = &quot;ko\\0rea&quot;
		printf(&quot;%s\\n&quot;, nation);
}
//결과 : ko
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;널 문자는 자동으로 문자열 맨 끝에 위치하기 때문에 &lt;b&gt;반드시 문자열의 길이보다 한 칸 더 할당해줘야 한다&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문자열 입력&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자가 할당한 배열의 크기를 넘어가는 문자열을 입력하게 되면 할당하지 않은 주소에 엉뚱한 값이 들어감&lt;/li&gt;
&lt;li&gt;따라서 안전하지 않다&lt;/li&gt;
&lt;li&gt;이를 막기 위해 입력함수에 할당한 배열의 크기를 전달함으로써 미리 크기를 넘어가는 문자열을 막아준다.cf. scanf vs scanf_s
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;scanf_s : s는 size의 약자. 입력함수에 size를 알려준다.&lt;/li&gt;
&lt;li&gt;scanf를 쓰면 입력받은 것에 따라 다른 주소도 침범할 수 있다&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;scanf_s(&quot;서식문자&quot;, &amp;amp;저장공간, sizeof(저장공간) ); // 저장할 공간의 크기를 미리 알려줌으로써 배열보다 긴 값을 넣을 때 차단함. // 차단되면 아무값도 넣지 않는다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;포인터와 문자열&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  문자열은 한 번 생성되면 직접 접근해서 바꾸는 것을 권장하지 않으며, 생성 시 const(상수) 와 함께 선언할 것을 권장한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;권장하는 표현형&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;cpp&quot;&gt;&lt;code&gt;const char* 포인터명   // 그 주소에 접근 후 수정 불가
const char* const 포인터명 // 주소의 값(들어있는 값) 변경 불가
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;코드로 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;cpp&quot;&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;

void main(){
    // 포인터 변수에 문자열 
    const char* fruit = &quot;apple&quot;;
    
    fruit = &quot;banana&quot;;
    printf(&quot;%s&quot;,fruit);   //결과 : banana 
                            // 포인터 변수에 접근하여 문자열 변경함(직접은 바로 불가능함)
    
    // 주소값에 직접 접근하여 변경 시도 -&amp;gt; 권장하지 않음. 오류
    *fruit = 'c';
    
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;string.h 헤더파일&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기존 배열의 값을 전달한 새로운 값으로 변경
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;strcpy_s(배열명, sizeof(배열명) , &amp;ldquo;새로운 값&amp;rdquo;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;문자열 비교
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;strcmp(값1,값2)&lt;/li&gt;
&lt;li&gt;같으면 0 ,다르면 1 or -1&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;문자열 길이
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;strlen(배열명)&lt;/li&gt;
&lt;li&gt;널문자를 제외한 실제 값의 길이&lt;/li&gt;
&lt;li&gt;널 문자를 직접 작성(&amp;rsquo;\0&amp;rsquo;) 하게 되면 그 앞까지의 문자개수를 알려준다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;코드로 확인하기&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;cpp&quot;&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;string.h&amp;gt;

void main(){
    char nation[6]=&quot;korea&quot;;
    
    //새로 입력 받고 출력하기
    scanf_s(&quot;%s&quot;, nation, sizeof(nation));
    printf(&quot;%s\\n&quot;, nation);
    
    // strcpy_s 사용해서 넣기
    strcpy_s(nation,sizeof(nation),&quot;japan&quot;);
    printf(&quot;%s\\n&quot;, nation);
    
    //strcmp 사용
    printf(&quot;%d\\n&quot;, strcmp(nation,&quot;japan&quot;));  // 1 : 두 값이 다르다
    
    if(!strcmp(nation, &quot;korea&quot;)){       // 두값이 같으면 0, if문은 1일 때 실행되므로 !
        printf(&quot;두 값은 같은 값입니다.\\n&quot;) 
    }
}
&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Skill/C,C#,C++</category>
      <author>steadilee</author>
      <guid isPermaLink="true">https://steady-lee.tistory.com/60</guid>
      <comments>https://steady-lee.tistory.com/60#entry60comment</comments>
      <pubDate>Fri, 10 Feb 2023 10:02:22 +0900</pubDate>
    </item>
    <item>
      <title>포인터 및 기본 배열</title>
      <link>https://steady-lee.tistory.com/59</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;포인터 : 저장 공간을 가리키고 있는 주소값&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;변수 : 값을 담는 저장공간&lt;/li&gt;
&lt;li&gt;&lt;b&gt;포인터 변수&lt;/b&gt; : 주소값을 담는 저장 공간&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;주소연산자 : &amp;amp;(앰퍼샌드)&lt;/li&gt;
&lt;li&gt;참조 연산자 : *(아스타리스크)&lt;/li&gt;
&lt;li&gt;포인터 연산자 : *(아스타리스트)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;주소값 앞에서 사용하면 참조 연산자,&lt;/li&gt;
&lt;li&gt;자료형 뒤에서 사용하면 포인터 연산자 ( 예: char* 문자열)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;포인터 연산&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;주소값에 연산을 하여 다음 칸 혹은 이전 칸에 접근하기 위함&lt;/li&gt;
&lt;li&gt;연산 시 해당 주소의 자료형 크기만큼( int면 +4) 연산된다&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;cpp&quot;&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;

int main(){
    int data = 10;
    int* pData = &amp;amp;data; // 주소값 변수에는 p를 붙인다
    
    printf(&quot;%p\\n&quot;,&amp;amp;data);    // 주소값
    printf(&quot;%p\\n&quot;,pData);   // 주소값
    printf(&quot;%d\\n&quot;, *pData); // 10
		printf(&quot;%p\\n&quot;,pData+1);  // 위 주소 +4
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;배열 : 저장공간의 나열&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;저장공간이 나열되어 있는 형태&lt;/li&gt;
&lt;li&gt;목적
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;변수를 여러 개 선언하면 이름이 많아져서 관리하기 힘듦&amp;rArr; 여러 칸 배열 한 번 선언&lt;/li&gt;
&lt;li&gt;규칙성이 없는 값에 규칙성을 부여할 수 있다. &amp;rArr; 배열 안에 넣어서 사용 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;array 데이터 자체의 주소는 array 첫번째 주소를 갖는다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;첫번째 주소를 활용하여 다음 주소에 접근 가능&lt;/li&gt;
&lt;li&gt;*(arr+0) *(arr+1)&lt;/li&gt;
&lt;li&gt;arr[0], arr[1]&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;배열의 선언&lt;/h3&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;자료형 배열명[길이] = {값1, 값2,...}
자료형 배열명[길이] ={초기값, }
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;초기값
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정수 : 0 / 실수 : 0.0 / 문자 : &amp;lsquo; &amp;rsquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;배열의 크기&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;sizeof(배열명)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;배열의 길이&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;sizeof(배열명) / sizeof(자료형)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;배열의 사용&lt;/h3&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;1. 배열명[index] = 값;   // 저장공간
2. *(배열명 + index) + 값;  // 값
3. *(배열명 + index) = 값;  // 저장공간
4. 배열명[index] +값;  // 값
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;index가 0 부터 시작하는 이유&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;배열명은 시작주소를 가지고 있기 때문&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&amp;rArr; 값에 접근할 떼, 주소값 앞에 *(참조연산자)를 붙여줘야 한다. 그리고 포인터 연산을 통해 배열명 + 정수로 각 주소에 접근하고 참조 연산자를 맨 앞에 붙여 값에 접근한다. &lt;b&gt;첫번째 칸의 값&lt;/b&gt;에 접근할 때는 *&lt;b&gt;(배열명 + 0 )이기 때문에 인덱스 번호는 0부터 시작&lt;/b&gt;한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;개념 확인 코드&lt;/h3&gt;
&lt;pre class=&quot;perl&quot;&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;

int main(){
    int arData[] = {3,5,1,9,7};
    int length = sizeof(arData)/ sizeof(int);

    for (int i=0;i&amp;lt;length;i++){
        printf(&quot;%d&quot;,arData[i]);
    }
    printf(&quot;\\n%p\\n&quot;,arData);   // 주소 0x500d60
    printf(&quot;%p\\n&quot;,&amp;amp;arData[0]);  // 주소 0x500d60
    printf(&quot;%p\\n&quot;,&amp;amp;arData[1]);  // 주소 0x500d64
    printf(&quot;%d\\n&quot;,sizeof(arData));   // 4*5 20
    printf(&quot;%d\\n&quot;,*(arData+2));     // 1
    printf(&quot;%d\\n&quot;,*(arData+4)); // 7
}

// aBcDeF.....XyZ 배열에 담기
void main(){
		char arData[26] = {'',}     // 초기화
		for (int i=0;i&amp;lt;26;i++){
				arData[i]=i%2 ==0? 97+i:65+i;
				printf(&quot;%c&quot;,arData[i]);
		}
}

&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Skill/C,C#,C++</category>
      <author>steadilee</author>
      <guid isPermaLink="true">https://steady-lee.tistory.com/59</guid>
      <comments>https://steady-lee.tistory.com/59#entry59comment</comments>
      <pubDate>Fri, 10 Feb 2023 09:44:41 +0900</pubDate>
    </item>
    <item>
      <title>퍼포먼스 마케팅</title>
      <link>https://steady-lee.tistory.com/58</link>
      <description>&lt;blockquote data-ke-style=&quot;style3&quot;&gt;퍼포먼스 마케팅이란?&lt;br /&gt;성과에 대한 목표를 설정하고, 그 성과 달성을 위해 업무를 진행하며 개선해 나가는 성과 중심의 마케팅 전략을 의미함&lt;br /&gt;&lt;b&gt;핵심은 고객 데이터 기반으로 유입을 강화하는 것&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;퍼포먼스 마케팅의 종류&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 검색광고(브랜드 검색 광고/ 키워드 검색광고)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 브랜드나 키워드를 검색했을 때 이미지나 텍스트를 상단에 노출시켜서 광고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 클릭 수에 따라 비용을 지불하는 CPC 방식&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 디스플레이 광고(배너광고/반응형 광고/네이티브 광고)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 텍스트가 포함된 이미지 중심의 광고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 레이아웃을 다양하게 한 반응형 광고도 포함됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 추천과 피드를 통해 자연스럽게 노출&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 디스플레이 광고는 다른 광고들에 비해 피로도가 적다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 리타켓팅 광고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 방문자가 광고주의 의도에 따른 액션을 취하지 않고 이탈한 경우, 해당 방문자에게 지속적으로 해당 제품 및 유사 제품 노출&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;퍼포먼스 마케팅 사례&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 오늘의 집 :&lt;span&gt;고객이 직접 올리는 사진 속 상품과 이의 태깅(Tagging) 분석을 &lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;통해 주요 키워드를 분석하여 이에 맞는 제품 및 상세페이지 준비한다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;퍼포먼스 마케팅과 그로스 해킹(마케팅) 비교&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;- 퍼포먼스 마케팅은 데이터를 기반으로 유입을 증가시키는 것이라고 할 수 있으며&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp; 그로스 해킹은 제품의 품질과 서비스 전반의 향상으로 소비자 유입을 증가시킨다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Data Analysis/공부</category>
      <author>steadilee</author>
      <guid isPermaLink="true">https://steady-lee.tistory.com/58</guid>
      <comments>https://steady-lee.tistory.com/58#entry58comment</comments>
      <pubDate>Tue, 7 Feb 2023 15:07:05 +0900</pubDate>
    </item>
    <item>
      <title>제어문 : 조건문, 분기문,반복문</title>
      <link>https://steady-lee.tistory.com/57</link>
      <description>&lt;blockquote data-ke-style=&quot;style2&quot;&gt;제어문?&lt;br /&gt;프로그램의 흐름을 제어하는 경우에 사용하는 실행문으로, 조건문, 반복문, 분기문 등이 포함된다&lt;/blockquote&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;조건식&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;참 또는 거짓, 둘 중 하나가 나오는 식&lt;/li&gt;
&lt;li&gt;참과 거짓을 나타내는 값 &amp;rArr; &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;조건식을 값으로 보는 연습을 하는게 중요&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;거짓 : 0&lt;/li&gt;
&lt;li&gt;참 : 0 이외의 모든 수, 1로 약속함.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;조건식에 쓰이는 연산자
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;관계연산자, 논리연산자, 단항 연산자, (+ 삼항 연산자)&lt;/li&gt;
&lt;li&gt;논리연산자 : &amp;amp;&amp;amp;, ||&lt;/li&gt;
&lt;li&gt;단항 연산자 : ! : NOT, 거짓을 참으로, 참을 거짓으로 변경, !A&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;삼항연산자의 활용&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;조건이 결과에 따른 값을 변형&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;541&quot; data-origin-height=&quot;54&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xWV3r/btrYmzwinMR/hjOnR6rbTSeQGfoYv1J8Ik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xWV3r/btrYmzwinMR/hjOnR6rbTSeQGfoYv1J8Ik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xWV3r/btrYmzwinMR/hjOnR6rbTSeQGfoYv1J8Ik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxWV3r%2FbtrYmzwinMR%2FhjOnR6rbTSeQGfoYv1J8Ik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;541&quot; height=&quot;54&quot; data-origin-width=&quot;541&quot; data-origin-height=&quot;54&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;결과에 따라 다른 format 출력 구현하기&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;condition1 = num1 &amp;gt; num2;
condition2 = num1 == num2;

format = condition2? &quot;%s&quot; : &quot;더 큰값 : %d&quot;

printf(format,condition1? num1:
		condition2? &quot;두 수가 같습니다&quot; : num2);
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예시 : 혈액형별 결과 출력해보기&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1675737358624&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;


void main() {
    char* qMsg = &quot;당신의 혈액형은?&quot;;
    char* choiceMsg = &quot;1. A\n 2.B\n 3.O\n4.AB&quot;;
    char* aMsg =  &quot;꼼꼼하고 세심하다&quot;;
    char* bMsg = &quot;추진력 좋다&quot;;
    char* oMsg = &quot;O&quot;;
    char* abMsg = &quot;ab&quot;;
    char* errorMsg = &quot;다시 시도해주세요&quot;;

		int condition = 1, condition2 = 0, condition3=0, condition4 = 0;
		
		condition1= choice ==1;
		condition1= choice ==2;
		condition1= choice ==3;
		condition1= choice ==4;    

    int choice = 0;
    
    printf(&quot;%s\n%s\n&quot;, qMsg, choiceMsg);
    scanf_s(&quot;%d&quot;,&amp;amp;choice);
    
    printf(&quot;%s\n&quot;,condition1 ? aMsg :
        condition2? bMsg:
        condition3? cMsg:
        condition4? abMsg: errorMsg);
    
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;if문 : 논리연산자 , 대소비교&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. if~if~if : 모든 조건을 검사할 때&lt;/h4&gt;
&lt;pre class=&quot;abnf&quot;&gt;&lt;code&gt;if(조건식) {
실행할 문장;
}

if(조건식) {
실행할 문장;
}

if(조건식) {
실행할 문장;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. if ~ else if ~ else : 위의 조건식이 참이 아니면 아래 수행&lt;/h4&gt;
&lt;pre class=&quot;gauss&quot;&gt;&lt;code&gt;if(조건식) {
실행할 문장;
}

else if(조건식) {
실행할 문장;
}

else(조건식) {
실행할 문장;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;cf. 일괄처리 : 분기별로 반복될 때 일괄처리한다&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예시 : 가장 아래에 printf문 한 번만 사용하도록 코드 구성&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;252&quot; data-origin-height=&quot;469&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/N5zK8/btrYponGY6W/t0c4xzapOuMrVNUF5wJhyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/N5zK8/btrYponGY6W/t0c4xzapOuMrVNUF5wJhyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/N5zK8/btrYponGY6W/t0c4xzapOuMrVNUF5wJhyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FN5zK8%2FbtrYponGY6W%2Ft0c4xzapOuMrVNUF5wJhyk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;252&quot; height=&quot;469&quot; data-origin-width=&quot;252&quot; data-origin-height=&quot;469&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;switch문 : 같은 값 비교 시 최적화된 구문&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;swith문을 사용할 때는 break 문을 꼭 사용하도록 한다&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;switch(변수명){
case 값1:
		실행할 문장;
		break;
case 값2:
		실행할 문장;
		break;
case 값3:
		실행할 문장;
		break;
case 값4:
		실행할 문장;
		break;
case 값5:
		실행할 문장;
		break;
....
....
default:
		실행할 문장;
		break;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cf. 문자열 출력 시, printf(&amp;rdquo;%s&amp;rdquo;, 변수명) 대신 puts(변수명)으로 출력 가능&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;반복문&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;for문&lt;/h4&gt;
&lt;pre class=&quot;abnf&quot;&gt;&lt;code&gt;for(초기식;조건식;증감식){
		반복할 문장;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;빈번하게 사용되는 연산자&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;  대입연산자&lt;/span&gt;(복합 대입 연산자, 누적 연산자) +=, -= ,*=, /=&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;  증감연산자 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전위형 ++ data&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;후위형 data ++ &amp;rArr; 해당 줄을 모두 수행하고 연산 수행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예제. A~F까지 B만 빼고 출력하기&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;

//A~F 출력하는데 B만 빼고 출력하기

// 잘못된 결과 : A,C,E
INT MAIN()
{
    FOR(INT I=0;I&amp;lt;5;I++){
        
        IF(I&amp;gt;0) {I++;}
        PRINTF(&quot;%C\\N&quot;,I+65);
    }
}

// 임시 저장 변수 temp 사용
int main()
{
    int temp=0;
    for(int i=0;i&amp;lt;5;i++){
        temp = i;
        if(i&amp;gt;0) {temp++;}
        printf(&quot;%c\\n&quot;,temp+65);
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;while문&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;  while 문의 3가지 형태&lt;/span&gt; :&lt;/p&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;while(조건)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;while(1) ~if() break;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;do {} ~ while(반복조건)~ &amp;rArr; 한 번은 꼭 수행한다.&amp;nbsp;&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;while(조건식){
		반복할 문장;
}

// 무한반복
while(1) {    &amp;lt;- 숫자는 0 아닌 수 아무거나
		실행문
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;관련된 기타 연산자&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. break&lt;/b&gt; : 컴파일러가 만나는 즉시 해당 중괄호 영역 탈출&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; ※ if문 안에서 break를 사용하면 if문 탈출이 아닌 if문을 감싸고 있는 영역 탈출.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;switch문 안에서 break를 사용하면 switch문만 탈출할 수 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. continue&lt;/b&gt; : 컴파일러가 만나는 즉시 다음 반복으로 넘어감&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; ※ continue 밑에 있는 문장을 실행하지 않을 때 사용&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;for문과 while문의 사용&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;for문 : 몇 번 반복 수행할 지 알고 있을 때&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;while문 : 몇 번 반복 수행할지&lt;span style=&quot;color: #ee2323;&quot;&gt; &lt;b&gt;알 수 없을 때&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;for문, while문, do~while문 순서도 비교&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;506&quot; data-origin-height=&quot;227&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfb15p/btrYpg4UTMf/KpGhkUhWQpdiAkfuVy5X0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfb15p/btrYpg4UTMf/KpGhkUhWQpdiAkfuVy5X0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfb15p/btrYpg4UTMf/KpGhkUhWQpdiAkfuVy5X0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbfb15p%2FbtrYpg4UTMf%2FKpGhkUhWQpdiAkfuVy5X0k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;506&quot; height=&quot;227&quot; data-origin-width=&quot;506&quot; data-origin-height=&quot;227&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Skill/C,C#,C++</category>
      <author>steadilee</author>
      <guid isPermaLink="true">https://steady-lee.tistory.com/57</guid>
      <comments>https://steady-lee.tistory.com/57#entry57comment</comments>
      <pubDate>Tue, 7 Feb 2023 12:56:31 +0900</pubDate>
    </item>
    <item>
      <title>연산자 우선순위와 비트연산</title>
      <link>https://steady-lee.tistory.com/56</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;연산자&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기능이 있는 특수문자&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;연산자 우선순위 : 최&amp;gt; 단 &amp;gt; 산 &amp;gt; 쉬 &amp;gt; 관 &amp;gt; (논)리 &amp;gt; 삼 &amp;gt; 대&lt;/b&gt;&lt;/span&gt;&amp;nbsp;&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;최우선 연산자&lt;/li&gt;
&lt;li&gt;단항연산자&lt;/li&gt;
&lt;li&gt;산술연산자&lt;/li&gt;
&lt;li&gt;쉬프트 연산자&lt;/li&gt;
&lt;li&gt;관계연산자&lt;/li&gt;
&lt;li&gt;논리연산자&lt;/li&gt;
&lt;li&gt;삼항 연산자&lt;/li&gt;
&lt;li&gt;대입연산자&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;결합성 : 하나의 수식에 동일한 연산자가 있다면, 해당 연산자의 방향에 맞게 결합되어 연산되는 성질
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;( ex: 3+5+9 &amp;rArr; (3+5) + 9 )&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;비트 연산&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정보 8개(8비트) = 1 byte&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;해당 연산자 : 논리연산자, 단항 연산자, 쉬프트 연산자&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;논리연산자
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;amp; (AND, 논리곱) : a &amp;amp; b &amp;rarr; 2진수 만들어서 각 자리수 곱한 결과와 같음&lt;/li&gt;
&lt;li&gt;| (OR, 논리합) : a | b &amp;rarr; 두 비트 중 하나라도 1이면 1&lt;/li&gt;
&lt;li&gt;^ (XOR, 배타논리합) : a ^ b &amp;rarr; 두 비트가 같은값이면 0&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;단항 연산자
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;~ NOT, 논리부정 : ~a, 1을 0으로, 0을 1로 반대로 바꿔줌&lt;/li&gt;
&lt;li&gt;최상위 비트가 1이면 (-), 0이면 (+)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;10강. ~10 &amp;rArr; -11 이라는 것을 증명하시오&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;쉬프트 연산자 : 빈자리는 0으로 채워지고(음수1로) 비트가 넘어가면 잘린다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;lt;&amp;lt; 좌쉬프트 : a &amp;lt;&amp;lt; b , a를 b만큼 좌로 비트 이동&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;우쉬프트 : a &amp;gt;&amp;gt; b , a를 b만큼 우로 비트 이동&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;비트연산의 실제 활용
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;RGB, IP주소&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Skill/C,C#,C++</category>
      <author>steadilee</author>
      <guid isPermaLink="true">https://steady-lee.tistory.com/56</guid>
      <comments>https://steady-lee.tistory.com/56#entry56comment</comments>
      <pubDate>Tue, 7 Feb 2023 11:33:49 +0900</pubDate>
    </item>
  </channel>
</rss>