inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

2차원 배열에서 arr[0]+1 과 &arr[0]+1 의 차이

미해결

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

#include <stdio.h> int main() { float arr2d[2][4] = { {1.0f,2.0f,3.0f,4.0f},{5.0f,6.0f,7.0f,8.0f} }; printf("%f, %f\n", *(arr2d[0] + 1), **(&arr2d[0] + 1)); printf("%llu, %llu", (unsigned long long)(arr2d[0] + 1), (unsigned long long) ( & arr2d[0] + 1)); // 12 차이 } 위의 예제에서 arr2d[0]+1은 arr2d[0][1]의 주소이고, &arr2d[0]+1은 arr2d[1][0]의 주소라고 나오는데요 그냥 c언어의 문법이 그런 것인지, 아니면 어떤 이유가 있는 것인지가 궁금합니다. 또한, 위의 예제에서 [0][1]번째의 값인 2.0과 [1][0]번째의 값인 5.0을 출력하고자 할때, 후자의 경우에만 indirection을 두번 해줘야 하는 이유가 알고 싶습니다.

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

포인터를 배열처럼 사용

미해결

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

안녕하세요! 포인터를 배열처럼 사용하는 원리가 이해가 가지 않아 문의 드립니다. 아래의 스크린샷을 봐주시면 감사하겠습니다!! double* pd = arr2;는 포인터 변수 pd에 arr2[0]의 주소 즉, &arr2[0]을 넣어주는 것이라고 생각합니다. 그래서 pd로 pd가 가지고 있는 주소값으로 그 주소가 가리키는 공간에 접근해 *pd = 3.0처럼 arr2[0] 공간의 값을 수정해주는 것은 이해가 갑니다. 하지만 pd[2] = 1024와 같이 포인터에 배열을 쓰는 것이 이해가 가지 않습니다. pd 자체는 포인터 변수이며 단순히 &arr2[0]을 가지고 있을 뿐인데 어떻게 pd 자체가 arr2처럼 배열로 동일시가 되나요?? pd[2]는 pd+2와 같은 역할을 하는 것인가요? 만약 그렇다면 arr2[0]이라는 주소값에 포인터 연산을 해 2만큼의 인덱스를 이동해 arr2[2]에 도달했다고 봐도 되나요??

  • c
jiwon6760 댓글 1 좋아요 2 조회수 474

포인터 2차원 배열

미해결

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

안녕하세요 포인터 2차원 배열 9분 대부터 다시 공부하다가 이해가 가지 않아 문의드립니다. 위의 코드에서 *(*(parr + j) + i));와 (parr[j] + i);가 헷갈립니다. 일단 제가 처음에 이해한 대로 설명드려보겠습니다. parr은 parr[0]을 가리키는 포인터이며 즉 이 포인터가 최종적으로 가리키는 공간은 &arr0[0] 즉 arr 배열의 첫번째 공간입니다. 이 상태에서 예를 들어 parr + 1을 하면 &arr0[1]로 이동하며 를 하면 그 값은 2 이런 식이라고 생각했습니다. 또한 parr[1] + 1에서 parr[1]은 포인터이며 이 포인터가 가리키는 공간은 &arr1[0]이며 이 상태에서 포인터 연산 +1을 해주면 &arr1[1]이고 이를 로 접근하면 그 값은 5로 이해했습니다. 그치만 실제 결과를 보면 위에서 제가 제시한 두 코드의 결과는 같아야 되더군요. 그렇다면 그 결과를 도출하기 위해 다시 *(*(parr + j) + i));를 설명드리겠습니다. parr 배열 이름 자체는 &parr[0]이며 이 상태에서 포인터 연산 + 1을 하면 &parr[0] = &arr0[0], &parr[0] + 1 = &arr0[1]이 아니라 &parr[0] + 1 = &parr[1]이며 이 상태에서 로 접근하면 그 값은 4, 4+1은 5이며 이를 *로 간접 접근하면..이런 식인데 어디부터 제 개념이해가 잘못됐는지 모르겠습니다.. parr[1]로 먼저 arr1[0]에 접근한 뒤 포인터 연산 +1을 하는 것과 parr 자체에서 포인터 연산 +1을 하면 결과가 정확히 어떻게 다르며 *(*(parr + j) + i)) 이 코드의 정확한 개념이 궁금합니다.

  • c
jiwon6760 댓글 1 좋아요 3 조회수 839

graphviz 설치 후 에러메시지..문의드립니다.

미해결

[개정판] 파이썬 머신러닝 완벽 가이드

graphviz 설치하고 실습파일 4-2의 3번째줄까지 코드를 작성하면 '[Errno 13] Permission denied: PosixPath('dot')' 가 발생합니다. 해결방법을 알 수 있을까요?

  • python
  • 머신러닝
  • 통계
sitedelarue 댓글 2 좋아요 0 조회수 491

파이썬 주파수 추출

미해결

파이썬을 통해 음성 wave파일에서 주파수 값을 추출해서 array 등으로 계산할 수 있도록 하려고 합니다. 그렇게 해서 주파수 대역폭 (최대 - 최소)를 값으로 구하고 싶은데 아무리 구글링을 해도 안나오네요 ㅜㅜ 뭘써야할까요..>?

  • 파이썬
  • 주파수
  • 통신
  • python
한정이 댓글 1 좋아요 0 조회수 1190

2.8 키워드와 예약어 질문

해결됨

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

안녕하세요. 강의를 듣고 키워드와 예약어 개념이 조금 헷갈려서 질문 드립니다. 키워드는 문법을 구분하기 위해 사용되는 단어이고, 예약어는 말 그대로 프로그래밍 언어가 문법에 사용하려고 예약해둔 단어들로 알고 있습니다. 그렇다면 헤더가 없어도 문법적으로 사용되는 단어들은 키워드에 포함되고, 헤더가 없으면 변수 혹은 함수의 이름으로 쓸 수 있으나 include 하는 순간 이름으로 쓸 수 없는 단어들을 예약어로 보는 건가요? 아니면 전자, 후자 모두 키워드이자 예약어인지 궁금합니다. 감사합니다.

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

강의자료 질문

미해결

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

혹시 ppt 강의자료는 따로 제공받을 수 없나요??

  • c
noahsway(김정호) 댓글 1 좋아요 2 조회수 725

LSTM 예측에 관련되서 질문입니다.

해결됨

실전 금융 머신러닝: 파이썬으로 구축하는 중급 투자 전략

안녕하세요 예측에 관련되서 여쭤볼게 있어서 질문 드립니다. LSTM훈련 후 Original Price와 Predicted Price의 그래프를 그리실 때 자세히 보시면 Predict price가 Original price의 데이터를 1스탭 뒤로 그려지는 것을 볼 수 있습니다. 그렇다면 이건 예측이 아니라 전 스탭에 있는 데이터를 어느정도 이동평균 또는 지수 이동평균과 같이 보정해서 쓴다고 보는게 맞지 않을까요? 이렇게 나오는 것보다 완전히 맞지 않더라도 1스탭 뒤로 예측되는 예측되는 것보다 어느정도 맞게 따라가는 방법은 없을까요?

  • python
  • 머신러닝
methodfunc 댓글 1 좋아요 0 조회수 475

음...

미해결

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

addfirst 랑 addlast 를 왜 나누는지 이해가 안됩니다. addlast 코드만 있어도 추가하는데는 문제가 없어보이는데...

  • c
gwisej68 댓글 1 좋아요 0 조회수 433

예제 질문입니다

해결됨

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

교수님 예제에서 print_binary 함수 를 만드실때 remainder 라는 변수 를 쓰셨는데 다른 변수를 쓰지 않고 파라미터에서(?) 받아온 num 변수만을 사용해 밑에처럼 짜면 문제가 생기나요?

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

[5.1 반복 루프] goto문 결과 질문

미해결

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

5.1 강의의 6:11초쯤에서 goto문의 출력 결과로 1~9까지만 나오고 10은 안 나왔는데 나중에 설명한다고 하셨는데 설명을 안 하셔서 질문 남깁니다. 교수님이 작성하신 코드에서는 n이 10일 때 printf를 안 하고 바로 goto out;이 실행되기 때문에 결과가 9까지 출력되는 것 맞나요? goto문으로 1~10까지 출력되는 반복문을 만들려면 n == 10이 아니라 n == 11로 써야하는 것 맞을까요?

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

updateform, A user with that username already exists. 에러

미해결

작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지

updateform에서 disabled = True로 변경하여 url로 접속해보면 제대로 적용이 되는 것을 확인할 수 있습니다. 하지만 비밀번호를 입력하고 제출을 누르면 계속해서 A user with that username already exists. 메시지만 뜨고 있는 상황입니다. ㅠㅠㅠ

  • python
  • django
  • docker
kookb2000 댓글 3 좋아요 3 조회수 1590

부동소수점 비교

해결됨

독하게 되새기는 C 프로그래밍

안녕하세요! 부동소수점 비교 관련 질문이 있습니다. 그간 부동 소수점(float 및 double) 비교 시 아무 생각없이 썼는데요;; 표현 범위를 넘어갔을 때 숫자가 보장이 안되어서 == 연산 오류가 있는것은 이해 하였는데요 두 수의 작고 큰지 (<,>)에 대한 비교에 대해서는 오차가 없는 것 인지 궁금합니다. 감사합니다!

  • c
  • kernel
  • secure-coding
보노보노 댓글 2 좋아요 0 조회수 520

continue의 용도

해결됨

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

이번 예제의 count 함수와 get_first_char 함수에 사용된 continue; 들은 어떤 의미를 가지나요?? 7.10 강의 에서 말씀하신 '세미콜론만 있으면 잘 안보이기때문에 단지 눈에 잘 보이기 위한' 용도인가요?

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

sizeof operator malloc

해결됨

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

4.2강 10:26 부분에서 int* int_ptr = NULL; int_ptr = (int*)malloc(sizeof(int) * 30); 위와같은 코드를 printf("size of pointer %zu bytes\n", sizeof(int_ptr)); 이렇게 실행했더니 결과값이 malloc을 지우나 안지우나 8이 나오는데 이것또한 운영체제의 32인지 64인지에 따라 다른건가요?

  • c
홍진기 댓글 1 좋아요 1 조회수 386

4.7 %f, %g, %% 질문

미해결

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

printf("%f %f %lf\n", 3.141592f, d, d); 의 결과로 3.141593 이 출력되던데 왜 3.141592가 아니라 갑자기 3.141593이 출력되는 건가요? printf("%g %g\n", 123456.789, 1234567.89); 의 결과로 123456이 아니라 123457 이 출력되는 이유가 무엇인가요? %g 라는 게 정확히 어떤 건지 궁금합니다 강의 코드의 주석에 printf("%%\n", d); // Note the warning. d is ignored. 라고 적혀져 있던데 warning이 발생하는 이유는 무엇이고 d가 무시된다는 것은 무엇인가요? 이 주석에 대해서도 설명해주시면 감사하겠습니다

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

scanf에 녹색줄 없애기

미해결

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

안녕하세요 이전까지 강의 들을때는 scanf에 녹색줄이 뜨지 않았는데요, 이번에 비주얼 스튜디오를 새로 깔고 나니 계속 scanf에 녹색줄이 뜨면서 " 반환값이 무시되었습니다." 메세지가 뜨네요. 실행은 잘 되지만 계속 거슬려서, 해결할 수 있는 방법이 있을까요? ㅠㅠ

  • c
gns 댓글 1 좋아요 1 조회수 1730

마지막 custom input function 예제에서 버퍼비우기 코드의 역할이 궁금합니다

미해결

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

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #define STRLEN 81 char* custom_string_input(char* st, int n); int main() { char word[11]; puts(custom_string_input(word, 11)); return 0; } char* custom_string_input(char* st, int n) { char* ret_ptr; int i = 0; char ch; ret_ptr = fgets(st, n, stdin); if (ret_ptr) { while (st[i] != '\n' && st[i] != '\0') i++; if (st[i] == '\n') st[i] = '\0'; //else // while ((ch = getchar()) != '\n') // clear buffer // continue; } return ret_ptr; } 1.위의 코드에서 버퍼 비우기 코드 else 부분을 주석 처리하고 실행해도, 버퍼에 남아있는 문자들이 결과에 영향을 주지 않는 것 같은데요 (재실행해도 이전 버퍼에 영향을 받지 않는 것 같고요) 버퍼 지우기 코드가 있어야 할 이유가 있나요? 안정성을 위한 부분일까요? 2.버퍼를 디버거의 memory로 확인하는 방법이 있을까요? 버퍼에 대해 헷갈릴 때 직접 디버거로 찍어보고 싶은데, 방법을 모르겠어요 3.gets()함수에 대해 설명하실때, gets() reads one line and removes \n and add \0 라고 하셨는데, 여기서 \n을 지운다는게 버퍼에서 지운다는 얘기일까요?

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

태그의 속성값을 텍스트로 출력할수있나요?

미해결

안녕하세요 현재 파이썬을 공부중인 학생입니다. 이전까지는 태그의 값을 텍스트로 출력하고 있었는데 태그안에 속성값을 텍스트로 출력할일이 생겨서 여러 방면으로 검색 및 시도를 해보고 있는데 잘 안되네요 여기서 data-taitle="BLACK(99)" 의 BLACK(99) 를 텍스트로 출력하고 싶습니다. 어떻게 하면 될까요? #python

  • python
  • selenium
kshssi 댓글 1 좋아요 0 조회수 613

인기 태그

인프런 TOP Writers

주간 인기글