묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨독하게 시작하는 C 프로그래밍
c언어 자료형에 대해
자료형에 대한 이해 5:38에서 C언어 자료형에 대해 설명하는 도중 함수형에 대해 의문이 들어 글을 작성합니다. 이전에 설명해 주실때 자료형은 일정길이의 메모리에 저장된 정보를 해석 하는 것으로 설명해주셨습니다. 함수형은 메모리에 일정길이를 해석하는 개념이 있는지 또는 다른 해석법이 있는지 궁금합니다.
-
해결됨독하게 시작하는 C 프로그래밍
Switch-case 문 예제
안녕하세요 강사님섹션 11 기본 제어문 switch-case문 예제 scanf_s에서 중간에 1을 쓰셨던데 이유를 알 수 있을까요?실제로 실행을 해보니 1을 넣으면 결과가 잘 나오는데 1을 넣지 않으면 실행창은 뜨는데 아래 실행 창 처럼 멈춰 있습니다. 각각의 이유를 알 수 있을까요?오류코드도 뜨는데 무슨 말인지 잘 모르겠는데 알려주실 수 있나요? 오류 코드 감사합니다.
-
미해결Arm 아키텍처: 트러스트존(TrustZone) [저자직강 3부-1]
Current Exception Level 설정
안녕하세요. 익셉션 벡터 테이블에서 Current Exception Level이 어떤 경우에는 EL1이 되고 EL3가 되는지 궁금합니다. 예를 들면, 시큐어 모니터가 포함된 시스템에서는 무조건 Current Exception Level이 EL3로 설정되는 것인지 입니다.
-
해결됨독하게 시작하는 C 프로그래밍
나이, 이름 입력 예시에서 scanf_s() 함수 사용 이후 gets_s() 함수 사용 시 오류
gets_s() 함수가 키보드 추상화 파일의 버퍼에서 null이 나올 때까지 문자열을 가져오는 함수잖아요.scanf_s() 함수를 통해 5\n 이 저장되었다고 했을 때, %*c를 통해 \n을 제거하지 않으면 gets_s() 함수는 \n이 들어있어서 입력을 중지하는 거라고 이해했습니다.여기서 질문입니다. null이랑 \n 이랑 다르다고 알고 있는데 왜 null 이 나온 것처럼 gets_s() 함수가 수행되지 않는지 궁급합니다!!감사합니다. (꾸벅)
-
해결됨독하게 시작하는 C 프로그래밍
문자열처리 함수소개강의에서 질문 있습니다.
강의 감사히 듣고 있습니다.질문 두 가지 있습니다.1.strcat_s 함수를 설명하실 때 strcat_s(szPath + 17 + 4, sizeof(szPath) - 25, "C programming");이라고 해주셨는데 22번째 인덱스부터 시작하여 널문자를 찾고 이어붙이는 구문이라면 전체 배열의 크기도 sizeof(szPath)-21로 조정을 해야 하는 것 아닌가요? 2.strcat_s(szPath + 17 + 8, sizeof(szPath) - 25, "C programming");에서 오류가 나는 것은 문자열 배열 넘어의 메모리를 시작값으로 설정했다는 것인데 확인할 수 있는 null 이 없기 때문인 건가요?감사합니다.
-
해결됨독하게 시작하는 C 프로그래밍
stdio.h 내 puts 함수 구현을 직접 볼 수 있나요?
안녕하세요 널널한개발자님 강의 재밌게 보고 있는 1인 입니다ㅎㅎ강사님께서 구현코드는 디버깅 과정에서 보여지지 않는다고 하셨는데, 볼 수 있는 방법이 있을까요? 모든 프로그래밍 언어의 기본이 되는 언어라고 배웠는데 실제구현을 볼 수 없다는 게 제 수준에서는 의아합니다. 찾아보니 소스파일 외의 구현코드를 찾기가 어렵고 챗지피티도 명쾌한 대답을 주지 못해서 질문 남깁니다. 여러번 질문했는데 항상 잘 답변해주셔서 감사드립니다~
-
해결됨독하게 시작하는 C 프로그래밍
getchar와 scanf의 차이
char ch = 0;scanf_s("%c", &ch, 1);printf("%d", ch); char ch = 0;ch = getchar();printf("%d", ch); 여기서 scanf_s와 getchar의 차이가 뭔가요?
-
해결됨독하게 시작하는 C 프로그래밍
memcpy 사용 후 free 함수 사용여부
memcpy 의 내부동작을 설명하실때 동적메모리할당 구문이 있었는대 이 부분은 free 로 안닫아줘도 괜찮은건가요??
-
해결됨독하게 시작하는 C 프로그래밍
qsort 함수에 관한 질문입니다.
stdlib에서 제공하는 qsort 함수qsort(void base, size_t width, int(*compare)(const void* key, const void* element))에서 compare부분이 비교함수를 가리키는 함수 포인터라고 알고있습니다.그렇다면,qsort(aList, 5, sizeof(int), *myCompare); 같이 넣지 않고qsort(aList, 5, sizeof(int), myCompare); 처럼 넣는 이유가 뭔가요?
-
해결됨독하게 시작하는 C 프로그래밍
함수 포인터 강의에서 질문이 있습니다.
int(*pfGetMax)(int,int,int) = GetMax; 를 통해함수 포인터 선언 정의를 동시에 하고printf("MAX: %d\n", pfGetMax(1,3,2)); 를 하셨는데함수 포인터를 사용하여 GetMax 함수를 호출하는 과정에서pfGetMax(1,3,2)를 사용하셨는데 이 표현이 이해가 가지 않았습니다.포인터의 간접지정을 통해서 값을 가져와야 한다고 생각했는데(*pfGetMax)(1,3,2) 처럼 해야하는 것이 아닌가요?
-
해결됨독하게 시작하는 C 프로그래밍
[필수 실습 문제] '*' 출력 놀이 응용
if문을 쓰는 것과 아래 코드처럼 for문만 쓰는 것 중에 어느 코드가 더 효율적인가요?for (int i = 1; i <= 5; i++) { for (int j = 0; j < 5 - i; j++) { printf(" "); } for (int j = 0; j < i; j++) { printf("* "); } puts("");}
-
해결됨독하게 시작하는 C 프로그래밍
[필수 실습 문제] 버스 요금 계산
안녕하세요 강사님 [필수 실습 문제] 버스 요금 계산 관련 질문 있습니다.저는 나이가 20살 미만이면 기본 버스 요금 1000원의 75% 적용한다는 구문을printf 함수 안에 input*0.75 이렇게 적었는데요이렇게 적으면 최종 요금이 0이 나오더라구요이렇게 되는 이유가 최종 요금을 나타내는 형식문자가 %d인데 *0.75 를 곱해서 일어난 것 같은데전체적으로 보면 input 0.75 = 1000 * 0.75 =750 의 정수형식이라서 상관없을 거 같은데 형식 문자가 %d 정수형이면 그 값을 나타내는 변수에도 정수만 들어가야하나요?
-
해결됨독하게 시작하는 C 프로그래밍
[섹션10 연산자] 필수 실습 문제 합격, 불합격 판단하기
안녕하세요 강사님[섹션10 연산자] 필수 실습 문제 합격, 불합격 판단하기 문제 질문드립니다. 강사님께서는 printf 함수안에 조건(3항)연산자를 넣으셨는데요저는 nSelect이라는 문자열을 선언해서 nSelect에 합격, 불합격이라는 문자열을 저장해서 printf로 출력하는 방식으로 문제를 풀어봤습니다 nSelect이라는 변수에 문자열의 공간!?을 10byte로 선언하고 0으로 초기화 한뒤에 실행을 했더니 실행은 잘 되는데 nSelect이라는 변수에 빨간색 밑줄과 오류 코드가 L-value로 뜨더라구요 왼쪽 피연산자를 변수인 nSelect으로 선언했는데 오류코드가 왜 뜨는건지 모르겠고 오류코드가 뜨는 왜 점수를 80으로 입력하면 '합격', 70으로 입력하면 '불합격'이라고 실행이 잘되는데 왜 그런지 이유가 궁금합니다. 문제가 없는건가요? 일부러 오류를 내보려고 nSelect이라는 변수에 문자열의 공간!?을 1byte로 선언하고 0으로 초기화 한뒤에 실행을 했더니 일단 실행은 잘됩니다. "합격"이라는 글자는 한글이므로 한글자 당 2byte 총 4byte의 크기이고 "불합격"이라는 글자는 3*2 = 6byte라서 nSelect라고 선언한 문자열 변수에 공간에 없어서 실행조차 되지 않아야하는데 실행이 됩니다. 왜 실행이 되는 것일까요? 물론 하단 오류 목록에 '배열의 크기가 0보다 커야합니다.' '상수크기의 0 배열을 할당할 수 없습니다'라는 설명이 있긴하지만 실행은 되어서 의문입니다. 또한 8번째 코드의 L-vaule 오류는 여전히 나옵니다.nSelect 문자열의 크기 선언을 1byte로 하면 역시 실행은 잘되는데 여전히 L-value 오류 항목이 뜹니다 선언한 배열의 크기가 1byte인데 그보다 크기가 큰 "합격", "불합격"이 문자열에 대입되고 실행이 됩니다. 이유가 궁금합니다
-
해결됨독하게 시작하는 C 프로그래밍
포인터와 배열의 이름의 차이가 궁금합니다.
상수 포인터와 배열의 이름은 유사한 개념이라고 파악하고 있었는데, sizeof(배열의 이름)은 배열의 크기를 출력해준다는 점에서 약간의 차이가 있다는 점을 알게 되었습니다.또한, 참조 연산자를 통한 결과 또한 포인터의 경우, 메모리를 확인한 결과 해당 주솟값을 가리키고 있는 다른 주소의 값을 가지고 있었지만, 배열의 이름은 동일한 주솟값이 결과로 나오는 것을 확인할 수 있었습니다.제가 이해한 바로는 배열의 이름 자체는 배열의 시작 주소이기에 'test2' 는 'H'라는 배열의 시작 주소를 가리키고, '&test2'는 "Hello World"라는 배열 자체 주소를 가리키는 것이라고 판단을 했는데, 이것이 맞는 이해인지 궁금합니다.두 개념이 비슷하지만 약간의 차이가 있는 것 같은데 이 차이에 대해서 설명해주시면 감사하겠습니다.
-
해결됨독하게 시작하는 C 프로그래밍
배열강의에서 l-value r-value 관련 궁금한 점이 있습니다.
안녕하세요강의 감사히 잘 공부하고 있습니다. 배열 강의에서 배열의 이름 int a[4]; 같은 경우 a이 상수와 같은 r value 에 속한다고 하셨는데, 배열 이름은 메모리 상의 데이터 구조를 식별하는 역할을 하며 이는 주소의 불변성과 관련이 있기 때문에 l-value로서 값이 변경되지 않는 특수한 형태로 보는 것이 더 맞지 않나요?
-
해결됨독하게 시작하는 C 프로그래밍
간접 지정 증감 연산 질문 있습니다.
pszData의 총 5가 증가했고 (인덱스가 5개 증가) int형으로 바꾸었기 때문에 주소의 값이 5가 아닌 20이 증가한 것을 확인했습니다.근데 Length의 값이 5가 나오는 것은 어떤 이유 때문인지 정확하게 이해가 안됩니다. 배열의 식별자는 주소 상수이기 때문에 20이 나와야 되는게 아닌가 라고 생각했습니다. 왜 5가 나오는지 잘 모르겠습니다. pszData가 szBuffer와 5만큼 떨어져 있기 때문에 5가 나온 것입니까? 메모리에는 pszData와 szBuffer가 주소 상수값을 가지고 있고 연산한 것처럼 보이는데 왜 5가 나올까요...
-
해결됨독하게 시작하는 C 프로그래밍
달팽이 문제] 설명을 듣지 않고 구현을 해봤습니다.
도전정신 때문에 설명 듣기 전에 구현을 했더니 강사님 의도와 다르게 구현되었지만.... 1시간 헤딩한 시간이 아까워서 남겨둡니다아~~두 가지 접근방법이 생각났는데, 그 중 하나는 이동 불가능할때마다 이동 방향을 바꾼다는 간단한 논리로 위 코드로 구현해봤고,두 번째로 생각난 접근방법은 위 그림처럼 블럭이 5, 4, 4, 3, 3, 2, 2, 1, 1 순으로 첫번째를 제외한 블럭 수가 2개씩 묶인다는 점이 생각났는데, 첫 번째 블록이 규칙에 살짝 어긋난다는 점에서 구현이 복잡해질 것 같아서 포기했습니다. 설명해주신 방법대로 위 그림에서의 블럭이 2개 합쳐진 채로 규칙을 찾았으면 간단하게 구현 가능했을 것 같습니다.설명해주신 방법으로도 구현을 해봐야겠네요..
-
해결됨독하게 시작하는 C 프로그래밍
숙제해왔습니다
25번 반복에 끝낸다는 방향을 잡고 시작했습니다.9, 7, 5, 3, 15/4, 4/3, 3/2, 2/1/ 1/0+/+, -/-, +/+, -/-, +/+그리고 행 증가, 열 증가인지 파악한 후에 코딩했습니다.다른 모범 답안 보니까 저랑 달라서 자신감이 뚝 떨어졌습니다.제가 생각해낸 패턴을 코드로 하나도 구현하지 못한거 같아요 예제 코드보니까... 예제 코드 보면서 현타 많이 왔는데 다시 처음부터 한다고 생각하고 코드짜보겠습니다.
-
해결됨독하게 시작하는 C 프로그래밍
quick sort 부분 구현했습니다.
pivot이 되는 5보다 큰 값은 오른쪽의 작은 값과 교환하면서 마지막에는 pivot의 위치도 바꾸어 주었습니다. 이후 코드를 작성한다면 pivot의 값을 다시 0과 high+1로 또 for문을 작성해야 하는데 코드가 무자비하게 길어집니다. 솔직하게 for문 안에서 모든걸 끝내기에는 제가 너무 부족한거같습니다. 이후 배우는 함수에 피벗이나 리스크 길이 등 매개변수로 받아서 리스트 길이가 0이나 1이 될때까지 반복하고 값을 교환해주는 것도 함수로 만들어서 처리하면 좋을 것 같습니다. 코드가 복잡해질수록 너무 어렵네요. 이정도 구현한것으로 만족하겠습니다
-
해결됨독하게 시작하는 C 프로그래밍
선택정렬 if 교환
소스코드 18라인에 if로 j가 변환할떄만 바꿔주신다고 했는데 변환하지 않아도 자기자신끼리 교환하는 거니까 결과값이 달라지진 않잖아요. 근데도 조건문을 사용하는게 더 좋은 코드인건가요?