inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

함수 선언과 정의를 동시에 해도 되나요?

미해결

C 프로그래밍 - 입문부터 게임 개발까지

//함수 선언 void p(int num); int main(void) { int num = 2; p(num); return 0; } void p(int num) //함수 정의 { printf("num은 %d입니다.\n",num); } 이것이 책 본문에 나와 있는 내용입니다. 함수 선언따로 정의 따로 되어있는데요. 혹시 아래와 같이 선언과 정의를 동시에 해도 되나요? //함수 선언 및 정의 void p(int num) { printf("num은 %d입니다.\n",num); } int main(void) { int num = 2; p(num); return 0; }

  • c
  • 함수선언
Last Solution 댓글 1 좋아요 0 조회수 1110

[3.11] 4바이트 정수 범위에서 왜 유효숫자가 9개인지 모르겠습니다.

미해결

홍정모의 따라하며 배우는 C언어

-2,147,483,648에서 -2 자리는 모든 숫자 (-3, -4) 이런 건 안 되니까 정밀도로 보장할 수 없고 나머지는 정밀도로 보장이 된다고 하셨는데 -2 자리는 왜 정밀도로 보장할 수 없다는 건지 뭐가 안 된다는 건지 이해가 되지 않습니다. 그리고 정밀도로 보장한다 안 한다의 개념이 무엇인지 좀 더 명확하게 알고 싶습니다. exponent를 저장할 때 음의 지수가 필요 - unsigned 형태로 저장을 하고 127을 빼기 8bit 정수는 0 ~ 255까지인데 -127을 하면 -127 ~ 128 범위의 숫자를 표현할 수 있기 때문 +) unsigned int 타입으로 저장을 할 때 모든 bit가 0이거나 1인 경우에는 다른 용도로 사용을 한다고 함 일반적으로 -126에서 128의 범위를 가짐 위 설명에서 이해 안 되는 점 1. 컴퓨터가 지수를 저장할 때 왜 음의 지수가 필요한지 2. 다른 용도라는 게 무엇을 말하는 건지 3. 앞에 음의 지수를 나타내는 방법 설명하실 때는 0~255 범위에서 -127을 하니까 -127~128 범위를 가진다고 하셨는데 왜 추가적으로 설명한 부분(모든 bit가 0이거나 1인 경우)에서는 -127~128이 아닌 -126~128의 범위를 가지는지 답변 해주시면 감사하겠습니다.

  • c
sara0099 댓글 1 좋아요 1 조회수 591

1.5 통합 개발 환경 소개 질문

해결됨

홍정모의 따라하며 배우는 C언어

안녕하세요. 1.5 강의를 듣던 중 링커에 대해 궁금한 것이 있어 글 올립니다. 강의에 따르면 컴파일이란 Visual studio같은 문서 편집기에 사용자가 작성한 소스 코드를 컴퓨터가 이해할 수 있도록 번역하는 역할을 한다고 말씀하셨습니다. 이 컴파일이라는 소프트웨어는 언어 자체에 존재하는 것인가요? 아니면 통합 개발 환경과 같은 문서 편집기에 존재하는 건가요? 컴파일이라는 소프트웨어는 링커라는 소프트웨어를 포함하고 있는 건가요? 아니면 둘은 따로 분리된 소프트웨어인가요? 늘 친절한 답변 감사합니다.

  • c
이재완 댓글 1 좋아요 1 조회수 497

[3.0 고정 너비 정수] least의 의미가 궁금합니다

미해결

홍정모의 따라하며 배우는 C언어

질문글을 살펴보니 int_least8_t 는 char 과 같다고 하던데 최소 8비트면 그 이상 범위의 큰 숫자가 와도 되는 것 아닌가요? 최소 @비트의 정확한 의미가 궁금합니다.

  • c
sara0099 댓글 2 좋아요 1 조회수 561

[3.9 고정 너비 정수] %d에서 d의 의미가 궁금합니다.

미해결

홍정모의 따라하며 배우는 C언어

d32할 때 d가 decimal의 약자라고 하셨는데 decimal의 뜻은 소수, 십진법이라고 나옵니다. 여기서 decimal이 소수를 뜻하는 것이라면, int는 정수형 자료형인데 왜 형식 지정자는 정수가 아닌 소수를 뜻하는 decimal의 약자 d를 사용하는 것인가요? %d의 decimal이 십진법을 뜻하는 것이라면, 십진법은 0~9까지의 수이기 때문에 정수로 치고 이를 decimal = 정수 이렇게 정의 내려서 정수형 자료형의 형식 지정자로 %d를 쓰게 된 것인가요?

  • c
sara0099 댓글 1 좋아요 1 조회수 1152

join과 join fetch 의 차이 ..

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

OrderQueryRepository 에 findAllByDto_flat 보면 다 join 으로 되어있는데 join과 join fetch (페치 조인)의 차이점은 뭔가요 ..? join도 lazy 로 되어있는거 한번에 끌고오는 건 비슷한 거 같은데 .. ㅜ

  • java
  • spring
  • spring-boot
  • jpa
김김 댓글 1 좋아요 0 조회수 657

9분 05초 author이랑 isbn

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

author이랑 isbn이 null로 나와있는데 싱글테이블에서 Album이랑 Movie에 관련된 컬럼은 안나오고 딱 Book이랑만 관련된 author이랑 isbn 만 null로 표시됐는데 이건 JPA가 Book인 걸 알아서 그것만 표시해주는건가요 ?? 어떻게 author이랑 isbn만 표시해주게 되는건지 궁금합니다 ..

  • java
  • spring
  • spring-boot
  • jpa
김김 댓글 2 좋아요 0 조회수 531

포인터 연산에 관한 질문.

미해결

홍정모의 따라하며 배우는 C언어

#define CRT_SECURED_NO_WARNINGS #include <stdio.h> #include <string.h> void fit_str(char*, unsigned int); int main() { char msg[] = "just,""do it!"; puts(msg); printf("lenght %d\n", strlen(msg)); fit_str(msg, 4); puts(msg); printf("length %d\n", strlen(msg)); return 0; } void fit_str(char*a, unsigned int b) { a[b] = '\0'; } 마지막 줄의 a[b]는 되는데 a+b는 왜 안될까요...? a는 포인터 배열이기 때문에 a+b 연산이 a[b]와 같지 않나요?

  • c
peanutchan 댓글 1 좋아요 1 조회수 389

수강 범위에 대한 질문입니다 ㅠㅠㅠ

미해결

나도코딩의 자바 기본편 - 풀코스 (20시간)

안녕하세요 나도코딩님 오늘도 열심히 공부중인 학생입니다 ㅠㅠㅠ 복수전공 과목 중 자바로 배우는 자료구조를 수강중인데 사전에 자바 공부도 없이 듣는 수업이라 도통 무슨 소린지 이해가 가질 않네요.. 그래서 현재 고급편 결제하고 섹션9 추상클래스 까지 들은 상태인데 뒤로 갈수록 내용이 어려워져서 복습한다고 속도가 너무 늦어지는 상태에요.. 자료구조 내용을 이해하려면 일단 어떤 파트를 필수적으로 빨리 들어야 하고 어떤 파트는 빼도 되는지 알려주실 수 있을까요??ㅜ 답변 주시는데 도움이 될 지 모르겠지만 교재 한 챕터에 {자바 데이터 타입(기본타입, 참조타입), 제어문(조건문,반복문), 메소드(호출문,메인), try문} 이렇게만 존재하긴 하는데 중간중간 책에는 없는 추상클래스, 입력문 같은 파트도 보여서 감이 안잡히네요..

  • java
  • 객체지향
댓글 1 좋아요 1 조회수 410

인터페이스 변수

미해결

나도코딩의 자바 기본편 - 풀코스 (20시간)

안녕하세요~ 강사님, 인터페이스(후반전) 강의를 듣고 있는데, 왜 인터페이스 변수를 만드는지 이해가 가지 않습니다. 수업 내용에서 FactoryCam이 인터페이스 Detectable과 Reportable을 구현하여 인터페이스에 있는 메소드를 FacstoryCam에서 구현해야한다는 것은 이해했습니다. 그리고 다른 클래스의 detect 메소드와 report 메소드를 호출하는것이라서 public void detect(){detecter.detect();} 이고, detecter은 객체이잖아요. 여기서 막힙니다. 이 객체랑 인터페이스 변수랑 무슨 상관인지? FactoryCam 의 인터페이스 변수를 생성해서 변수에 값 저장하는 걸로 하면 되지 않는지? 왜 인터페이스 변수를 선언해서 거기다가 값을 저장하는지, 잘 이해가 안 됩니다.... ㅠㅠ 그리고 추가로, 인터페이스로 다중 상속이 가능하다고 하셨는데, 수업 내용 중 어떤 것이 다중 상속이 되고 있는지 파악하기가 어렵습니다. 혹시, 다른 클래스의 메소드를 호출할 수 있는 부분때문에 다중 상속이 가능한 것인가요? 후반부로 갈수록 어렵네요 ㅠㅠ

  • java
  • 객체지향
vlrmffpt33 댓글 1 좋아요 0 조회수 497

fileopen하는 txt파일을 어디서 다운받을 수 있나요?

미해결

정혜경 판타스틱 자료구조 in C

txt파일이 다운로드 zip파일 안에 없습니다! 파일이 없으니 코드를 바르게 쳤는지 실행해서 알아볼 방법이 없습니다.

  • c
구동 댓글 1 좋아요 0 조회수 452

Warp 갯수에 대한 고찰입니다....

해결됨

CUDA 프로그래밍 (2) - C/C++/GPU 병렬 컴퓨팅 - 벡터 vector 더하기

SM내 warp가 24개가 이상일 경우에 overlab이 생기지 않아 효율적인 스케줄링이 가능하다는 것은 정확히 이해 했지만, Warp 갯수가 적어지면 근본적으로 작업시간 자체는 줄지 않을까? 그렇다면 빨리 끝나는게 스케줄링이 좋은거 아닐까? 라는 생각이 들었습니다. 다음은 제 생각을 담은 그림입니다. 다음과 같이 23개의 warp가 overhead가 걸릴 수는 있겠지만 일이 끝나는 시간은 짧지 않을까? 또 반대로 warp의 수가 작다는 것은 일 양이 많지 않다는 것이니 당연히 빨리 끝나는게 맞지 않을까? 라는 생각을 했습니다.

  • c
  • c++
  • cuda
  • gpu
  • 병렬-처리
rkdghrk12 댓글 2 좋아요 0 조회수 573

8.5 getchar()와 scanf()를 함께 쓸 때 버퍼 비우기

미해결

홍정모의 따라하며 배우는 C언어

안녕하세요, 공부하다 버퍼에 대한 궁금증이 생겨 질문드려요! 아래의 코드를 실행하고 콘솔에서 입력할 때, A(엔터'\n')3(공백)5(엔터'\n') 의 형식으로 입력하게 되면, A와 3 사이에 제가 입력한 엔터는 따로 버퍼 비우기를 하지 않았는데도 scanf를 만났을 때 문제를 일으키지 않는데요..! 그 이유를 알고 싶습니다. 강의 너무 잘 듣고 있고, 교수님 강의 덕에 c에 대해 더 본질적으로 알게 되는 것 같아 늘 감사드립니다! #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void display(char cr, int lines, int width); int main() { char c; int rows, cols; printf("Input one character and two integers : \n"); while ((c = getchar()) != '\n') { scanf("%d %d", &rows, &cols); while (getchar() != '\n') continue; display(c, rows, cols); printf("Input another character and two integers:\n"); printf("Press Enter to quit.\n"); } return 0; } void display(char cr, int lines, int width) { for (int i = 0; i < lines; ++i) { for (int j = 0; j < width; ++j) putchar(cr); putchar('\n'); } }

  • c
현정 댓글 1 좋아요 1 조회수 855

p2와 ar2가 왜 호환이 안되는지 모르겠습니다.

미해결

홍정모의 따라하며 배우는 C언어

교수님이 p2는 이중포인터이고 ar2는 2개의 int를 가진 배열의 포인터...?라고 말씀하시는데 잘 모르겠습니다. 말씀이 이해가 안됩니다. p2는 두번의 주소값을 거쳐야 하는데 ar2는 ar2[0][0]의 주소값을 의미하기 때문에 한번만 주소값을 거칠 수 밖에 없어서 호환이 안되는건가요>?

  • c
peanutchan 댓글 1 좋아요 2 조회수 423

스프링 입문에 대하여 질문드립니다

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하십니까, 자주하는 질문 에서 학습방법을 봤는데 코드를 쭉 따라하는식 방법이 적혀있었는데, 이렇게 따라만 해도 공부가 되는게 맞을까 혹시나 하는 마음에 따로 질문을 올리게 되었습니다. 따로 국비학원 수료 없이 학교 졸업하자마자 취업했는데 백엔드 스프링을 사용한다해서 선생님 강의 커리큘럼을 따라갈려고합니다. 스프링을 배우는데 자바 기본 지식이 필요하다해서 자바의 정석 유튜브를 먼저 보고, 부족하지만 최대한 자바 기본 문법개념 같은걸 숙지한 상태에서 선생님 영상 시청하고있습니다. 선생님의 이론수업이 정말로 재밌고 스프링 입문하는데 좋은걸 알겠는데 이론설명뒤에 선생님이 치시는 코드가 무엇을 의미 해석이 안되고, 코드형식(?) 코드 구조 (문법?) 이게 정말 와닿지 않는 상태이다보니 ,영상을 보고 타이핑하니깐 공부 하는 느낌이 안들어서 걱정이 됩니다. 프로그래밍 능력, 자바기초실력이 부족해서 이런 느낌을 받는 거 같은데 회사 실무에 도움이 될까 걱정이 됩니다.처음 취직한 회사라서 최대한 적응하고 회사에 도움이 되는 개발자가 되어보고싶은데 어떠한 방식으로 공부를 해야할 지 조언이 가능할까요? (혹시 책이나 강의같은걸 추천해주시면 감사하겠습니다.)

  • java
  • spring
  • mvc
  • spring-boot
신입코딩 댓글 1 좋아요 2 조회수 1259

0.8 CPU가 일하는 방법 질문

해결됨

홍정모의 따라하며 배우는 C언어

안녕하세요. 강의를 보며 궁금한 점이 있어 글 올립니다. 프로그램을 실행할 때 운영체제가 보조기억장치에 저장된 프로그램을 주기억장치로 복사한다고 알고 있습니다. RAM에 프로그램의 명령어와 프로그램에 저장된 변수들이 복사된다면, 명령어와 변수는 각각 메모리의 다른 부분에 서로 연결된 상태로 복사되어 저장되는 건가요? 질문 읽어주셔서 감사합니다.

  • c
이재완 댓글 2 좋아요 1 조회수 361

0.6 컴퓨터 메모리의 기본 구조 질문

해결됨

홍정모의 따라하며 배우는 C언어

0.6 파트에서 질문 드릴 것이 있어 글 작성합니다. cpu가 ram으로부터 필요한 정보를 빼올 때, 메모리의 데이터는 항상 캐쉬 메모리에 저장된 뒤에 cpu에서 그 데이터를 연산하는 건가요? 캐쉬 메모리 덕분에 자주 사용되는 데이터를 ram에 직접 요청하지 않고도 cpu가 가져와 사용할 수 있는 것 같은데, 이때 자주 사용되는 데이터가 되는 기준은 무엇인가요? cpu가 ram에게 '어느 주소에 있는 데이터를 보내세요.'라는 요청을 할 때, 그 요청을 control bus가 전달하는 건가요? 그리고 강의를 보면 ram이 그 요청을 수락할 수도 거절할 수도 있는 것 같은데, 이 수락과 거절의 개념이 잘 와 닿지 않습니다. ram이 cpu의 요청을 거절하는 특정한 예시 하나 정도만 이야기해주시면 감사하겠습니다. 질문 들어주셔서 감사합니다.

  • c
이재완 댓글 1 좋아요 1 조회수 626

4-F 시간복잡도 O(2^26) 이면 풀려야 하는 것 아닌가요? ㅠㅠ

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

자바가 느려서인지, 아니면 제가 첨부터 접근을 잘못한건지 모르겠습니다. ㅠㅠ package lecture4; import java.util.*; public class Prob1062 { static List<Set<Character>> sets = new ArrayList<>(); public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int k = sc.nextInt(); if(k<5){ System.out.println(0); return; }else if (k==26){ System.out.println(n); return; } List<String> list = new ArrayList<>(); for (int i = 0; i < n; i++) { // 문자열 입력 받기 String str = sc.next(); list.add(str); Set<Character> set = new HashSet<>(); // 각 문자열의 문자들을 Set에 저장. for (char c : str.toCharArray()) { set.add(c); } sets.add(set); } List<Set<Character>> filtered = new ArrayList<>(); for (int i = 0; i < n; i++) { // K 보다 많은 알파벳으로 이루어진 경우 제외 if(sets.get(i).size()<=k){ filtered.add(sets.get(i)); } } List<Integer> masks = new ArrayList<>(); for (Set<Character> set : filtered) { // Set의 각 알파벳을 대응되는 비트마스크로 표현 masks.add(setToMask(set)); } int mask = 1; int max = 0; while (mask < (1<<26)-1){ // 모든 경우의 수 탐색 if(Integer.bitCount(mask)>k){ // 비트마스크의 1 개수가 k 보다 크면 다음 경우로 넘어가기 mask++; continue; } int count = 0; for (Integer m : masks) { // 문자열을 비트마스크로 표현한 것을 비교해서 읽을 수 있는건지 개수 샘 if((mask & m) == m){ count++; } } max = Math.max(max,count); // 최대값 저장 mask++; } System.out.println(max); } private static int setToMask(Set<Character> set){ int[] num = new int[26]; for (Character character : set) { num[25 - (character-'a')] = 1; } StringBuffer sb = new StringBuffer(); for (int i : num) { sb.append(i); } return Integer.parseInt(sb.toString(),2); } }

  • c++
  • 코딩-테스트
  • java
댓글 1 좋아요 0 조회수 3090

8.8 메뉴 만들기 예제 개행 입력시 문자가 무시됩니다

미해결

홍정모의 따라하며 배우는 C언어

안녕하세요! 아래의 코드를 실행시킨 뒤 먼저 '\n'입력 후 원하는 메뉴키를 입력하면 원하는대로 처리가 되지 않아요. 가령 이런식으로 엔터를 먼저 입력하고 q를 입력하면 quit를 실행하지 않고 다시 while문을 돌더라고요. 디버거로 한단계씩 살펴보니 문제는 get_first_char()함수에서 발생하는데, 처음에 getchar() 함수로 개행(\n)을 받으면서 다음 버퍼비우기(?) 코드에서 또 다시 입력을 받는 것 같고, 이 함수의 리턴값은 처음에 받았던 개행(c='\n')으로 나가서 생기는 문제 같은데요.. 이 코드에서 어떻게 고쳐야 처음 들어올 개행도 입력오류처럼 처리할 수 있을까요?? 코드는 아래와 같습니다! #define _ CRT_ SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> char get_choice(void); char get_first_char(void); int get_integer(void); void count(void); int main() { int user_choice; while ((user_choice = get_choice()) != 'q') { switch (user_choice) { case 'a': printf("Avengers assemble!\n"); break; case 'b': putchar('\a'); break; case 'c': count(); break; default: printf("Error with %d.\n", user_choice); exit(1); break; } } return 0; } void count(void) { int n, i; printf("Enter an interger:\n"); n = get_integer(); for (i = 1; i <= n; ++i) printf("%d\n", i); while (getchar() != '\n') continue; } char get_choice(void) { int user_input; do { printf("Enter the letter of your choice:\n"); printf("a. avengers\tb. beep\n"); printf("c. count\tq. quit\n"); user_input = get_first_char(); } while ((user_input < 'a' || user_input > 'c') && user_input != 'q'); return user_input; } char get_first_char(void) { int ch; ch = getchar(); while (getchar() != '\n') continue; return ch; } int get_integer(void) { int input; char c; while (scanf("%d", &input) != 1) { while ((c = getchar()) != '\n') putchar(c); printf(" is not an integer.\nPlease try again.\n"); printf("Enter an interger:\n"); } return input; }

  • c
현정 댓글 2 좋아요 1 조회수 371

인기 태그

인프런 TOP Writers

주간 인기글