inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

포인터 배열의 메모리 추적

해결됨

독하게 시작하는 C 프로그래밍

이 코드에서 궁금한 사항이 있어 질문 드립니다. 우선 astrList, astrList[0], astrList[0][0] 각각을 메모리 주소 검색을 하였더니 순서대로 astrList 의 경우 astrList[0] 의 경우 astrList[0][0] 의 경우 이렇게 나왔는데 astrList의 주소는 변수 자체의 주소이고, astrList[0] 의 주소는 'Hello' 중 H의 주소를 가리키고 astrList[0][0] 의 주소 또한 H의 주소를 가리키는게 맞지 않을까요? 왜 astrList[0][0] 의 주소는 저런식으로 나오는지 모르겠습니다... 0x48이 H인 것은 알겟지만 왜 주소에 그 값이 들어가는지도 이해가 가지 않습니다 ㅠㅠ 그리고 astrList의 주소를 검색했을 때 나오는 맨 위 3줄에 대해서도 잘 이해가 가지 않습니다... 글이 매끄럽지 못한 점 양해부탁드리겠습니다!

  • c
  • 컴퓨터-구조
  • assembly-language
  • vc++
psbtyu123 댓글 1 좋아요 0 조회수 318

해답파일 위치를 모르겠습니다

해결됨

독하게 시작하는 C 프로그래밍

달팽이배열 도저히 못풀겠어서 해답을 보고싶은데 어디있는지 찾아도 못찾겠어요ㅜㅜ

  • c
  • 컴퓨터-구조
  • assembly-language
  • vc++
조희선 댓글 1 좋아요 0 조회수 399

매개변수는 포인터, 함수 내에서는 배열?

해결됨

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

안녕하세요 강의 듣던 중 궁금한 게 생겨 여쭙게 됩니다. double average(double * data_array, int n) { printf("Size = %zd in function average\n", sizeof(data_array)); double avg = 0.0; for (int i = 0; i < n; ++i) { avg += data_array[i]; } avg /= (double)n; return avg; } (1) 위의 코드에서 average함수의 매개변수로 포인터변수인 data_array 가 들어와 있습니다. double * data_array 를 arr1[] 로 바꿔도 시스템은 이것을 arr1 배열의 첫주소를 가지는 포인터변수 double * (배열명) 로 인식한다는 것이 정확한 이해인가요? (2) average함수의 매개변수에 배열을 넣든 뭘 하든 시스템은 배열의 첫 주소를 가지는 포인터 변수로 읽어버립니다. 하지만 코드의 중간 쯤에 있는 avg += data_array[i]; 에서 data_array[i] 는 배열의 문법입니다. 물론, 예컨대 arr배열이 있을 때 *(arr+10) 와 array[10] 가 같은 요소를 가져온다는 것은 압니다. 하지만 average함수는 기존에 저희가 적은 배열의 정의를 못 만나봤고, 즉 알지 못하고 그 배열의 첫 주소만 가지고 있는 포인터변수만을 가지고 있습니다. 이 때 data_array[i] 라고 작성하면 시스템이 이것을 내부적으로 *(data_array + i) 즉, (본 강의에서는 배열명이 arr1 이었습니다) *(arr1 + i) 로 바꿔버리나요? 즉, 다시 말해 배열arr1 을 알지 못하고 배열arr1의 첫 주소값이 있는 포인터 변수만을 가지고 있는 함수 average가 어떻게 포인터 문법이 아닌 배열 문법을 쓰는지 궁금합니다. 긴 글 읽어주셔서 감사합니다.

  • c
Echapper4 댓글 1 좋아요 1 조회수 272

kernelMatCpy에서는 __syncthreads가 필요없지 않나요

해결됨

CUDA 프로그래밍 (4) - C/C++/GPU 병렬 컴퓨팅 - 행렬 matrix 곱하기

제목 그대로 kernelMatCpy에서는 각 스레드 작업이 다른 스레드에 영향을 주지 않기 때문에 필요없을 것 같은데요. 실제로 __stncthreads()를 제거하고 돌려봐도 정상적으로 결과가 나오구요. 혹시 이런 경우라도 내부적으로 꼬일 수 있어서 사용하신 것인지 아니면 대부분의 shared memory로 복사해서 쓰는 경우에 필요하기 때문에 습관(?)차원에서 사용하신 것인지 궁금합니다.

  • c
  • c++
  • cuda
  • gpu
  • 병렬-처리
최준석 댓글 1 좋아요 0 조회수 245

포인터 주소 대입

미해결

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

안녕하세요 int *a = &b; 코드가 위와 같을 때는 변수 b의 주소를 포인터변수 a에 넣는 걸로 이해했습니다. int *a = 123; 코드가 위와 같을 때도 포인터변수 a 에 123이라는 메모리 주소를 넣는다고 이해해도 될까요?

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

10.6강 1번 문제 1차원 배열을 2차원 배열로 만드는 문제

해결됨

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

double year2021[MONTHS] = { -2.4, 2.7, 9.0, 14.2, 17.1, 22.8, 28.1, 25.9, 22.6, 15.6, 8.2, 0.6 }; double year2022[MONTHS] = { -2.2, -1.1, 7.7, 14.8, 19.1, 23.3, 27.3, 25.7, 22.4, 14.6, 10.0, -2.8 }; double year2023[MONTHS] = { -1.5, 2.3, 9.8, 13.8, 19.5, 23.4, 26.7, 27.2, 23.7, 15.8, 6.8, 3.1 }; // 1. 1차원 배열을 2차원 배열로 구현 // 배열명의 값은 배열의 시작 주소와 같다. double* temperature[] = { year2021, year2022, year2023 }; printf("%zd %zd %zd %zd\n", sizeof(temperature), sizeof(temperature[0]), sizeof(*temperature[0]), sizeof(year2021) ); 1차원 배열(2021년, 2022년, 2023년)의 주소를 2차원 포인터 배열의 요소로 초기화했습니다. // 1. 1차원 배열을 2차원 배열로 구현 // 배열명의 값은 배열의 시작 주소와 같다. double* temperature[] = { year2021, year2022, year2023 }; 2중 for문의 내부 for 문의 조건부를 지정할 때 sizeof 연산자를 이용해서 아래같은 방식으로 구현하려고 했습니다. size_t col = sizeof(temperature[0]) / sizeof[double]; for(int j = 0; j < sizeof(temperature) / sizeof(temperature[0]); ++j) { for(int i = 0; i < col; ++i) { // (j, i)번째 요소 출력문 } } 제가 생각한건 'temperature[0]에 저장된 값이 year2021의 메모리 시작 주소와 같으므로 temperature[0]의 값을 역참조하면 year2021 배열 전체를 가리킬 것이다' 였는데 sizeof(*temperature[0]); 이 값이 year2021 의 0번째 double 요소 로 역참조되서 그런지 결과값이 8 로 잡혀서 size_t col = sizeof(temperature[0]) / sizeof[double]; col 의 값이 1 로 계산됩니다.. 어떻게 하면 temperature[0] 을 이용해서 배열 year2021 의 전체 길이 를 반환할 수 있을까요..??

  • c
쉽지않네 댓글 1 좋아요 2 조회수 497

필수실습문제 해답

해결됨

독하게 시작하는 C 프로그래밍

챕터14 필수실습문제 UI와 기능으로 나눠서 세 정수를 입력 받아 최대 값 구하는 문제를 혼자 해보고있는데 해답 파일이 찾아봐도 없는거 같아서요 ! 강사님이 작성하신 해답 예시와 비교해보고 싶은데 알려주실 수 있나요? 저는 이렇게 했는데 맞게 한건지 모르겠습니다 ㅜ 코드는 잘 돌아갑니다 그리고 숫자입력을 받는 부분에서 반복문을 사용할 수도 있을까요? for문을 사용할 수 있을거 같아서 시도 해보는 중인데 중간에 막혀서 궁금합니다. 막히는거보니 반복문을 쓸 수 없는 부분인거 같기도 해서요 ㅜㅜ 숫자 입력 받는 부분을 반복문으로 줄일 수 있을까요?

  • c
  • 컴퓨터-구조
  • assembly-language
  • vc++
수정 댓글 2 좋아요 0 조회수 312

서보모터 제어

미해결

HAL, CubeMX, TrueSTUDIO를 이용한 STM32F4 무료 강좌

안녕하세요 강사님! 강의를 듣고 따라해보다 잘 안되는 부분이 있어 질문드립니다ㅠㅠ 제 개인 보드로 서보모터를 제어할려고 강의를 따라해봤는데 서보모터가 반응이 없습니다. 저는 stlink가 내장되어 있는 보드를 사용해서 그냥 usb로 노트북에 연결해서 전원을 연결해 주었는데 혹시 이 전원이 부족해서 그런 것일까요?? 만약 그렇다면 해결방법은 어떻게 되는지 궁금합니다! 참고로 제 보드는 stm32f429zi discovery 보드입니다

  • c
  • iot
  • 드론-개발
규철 댓글 1 좋아요 0 조회수 527

C언어랑 관계있는지..

해결됨

독하게 시작하는 C 프로그래밍

음 클로저와 c언어의 함수 포인터 비슷한 느낌인데 차이점은 무엇일까요 클로저란 이름처럼 전역 변수처럼 사용하지만 클로저 함수만 접근 가능하기 떄문에 클로저란 이름을 쓴거 같은데 이점이 함수 포인터와 다른 점일까요... C언어 포인터 질문과 관계가 있는지 몰르겠지만 왠지 클로저 구현을 한다면 포인터를 사용한게 아닐까 싶은생각이 문득 들어서 한번 여쭤봅니다..

  • c
  • 컴퓨터-구조
  • assembly-language
  • vc++
궁금돌이 댓글 1 좋아요 0 조회수 360

재출력이 안돼요.

미해결

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

파일에 저장할 텍스트를 입력하는 것까지는 문제가 없는데 while (fscanf(fp,"%s",words) != EOF) fprintf(stdout,"%s\n",words); 이 문장이 제대로 실행되지 않는 것 같아요

  • c
박준성 댓글 1 좋아요 1 조회수 232

필수 실습 예제 질문 있습니다.

해결됨

독하게 시작하는 C 프로그래밍

예제는 점수 0~100점을 입력 받아서 80점 이상 이면 합격 그렇지 않으면 불합격이라고 출력하는 프로그램 작성입니다. #include<stdio.h> int main(void) { unsigned int input = 0; scanf_s("%d", &input); (input <= 100) ? printf("점수를 입력하세요: %d\n", input) : 0; (input <= 100) ? printf("결과 : %s", (input >= 80) ? "합격" : "불합격") : 0; return 0; } 저는 이런 식으로 코드를 짰는데 잘못된 점이 있는지 궁금합니다. 0~100을 나타내는 코드가 영상에 안 나와서 질문 드립니다.

  • c
  • 컴퓨터-구조
  • assembly-language
  • vc++
조희선 댓글 2 좋아요 0 조회수 426

질문이 있습니다

미해결

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

상당히 간단한 것일 수도 있겠지만 궁금한데 여러 줄 주석 처리를 할 때 한 번에 묶는 것을 어떻게 하는지 알려주실 분 계신가요?

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

warning이 안지워져요 3.4강의 21분

미해결

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

3.4 강의 21분 43초에 나오는 코드랑 똑같이 작성 하였는데 scanf("%f", &Won); 여기에 Warning이 계속 떠 있어요 Description은 Return value ignored: 'scanf'. 이렇게 나와 있습니다. 선생님은 안뜨는데 왜 저만 떠있나요 버전의 차이인가요? _CRT Secure No Warnings은 properties에 입력해두었습니다. #include <stdio.h> int main() { float Won = 0.0f; float USdollar = 0.0f; printf("Input Won\n"); scanf("%f", &Won); <<<<<<<<<<< 이 부분 USdollar = Won * 0.00089f; printf("USdollar = %f\n",USdollar); return 0; } Return value ignored: 'scanf'. 라고 떠있어

  • c
차희원 댓글 1 좋아요 1 조회수 195

scanf & 버퍼

미해결

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

안녕하세요 강의의 최종 코드 중 일부입니다. ... 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); ... 여기서 A 3 2(엔터) 를 입력하면 상단의 c=getchar()에 의해 getchar이 A를 가져가고 버퍼는 |A 3 2\n| 에서 | 3 2\n| 로 변하게 됩니다.(띄어쓰기 유의) 그다음 scanf("%d %d", &rows, &cols); 는 버퍼의 맨 앞의 띄어쓰기를 읽어야 하지 않나요? 그런데 아시다시피 scanf가 입력버퍼에서 읽는 것은 3과 2입니다. scanf가 띄어쓰기를 읽는다고 알고 있는데 3앞의 공백이 어떻게 처리된건지 궁금합니다. 감사합니다.

  • c
Echapper4 댓글 1 좋아요 1 조회수 294

10.2강 27:09에서 질문이 있습니다.

해결됨

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

가변 길이 배열에 대해서 위키에는 길이를 런타임에 결정하는 배열(whose length is determined at run time (instead of at compile time).) 라고 정의되어있는데요. https://en.wikipedia.org/wiki/Variable-length_array int main() { const int n = 8; int arr[n]; }; 제가 작성한 코드에서 n이 8로 초기화 및 상수로 되어 있는데 이건 컴파일 타임에 이미 배열의 길이를 결정해 놓은게 맞나요?? 오류가 나는 것은 비주얼 스튜디오의 컴파일러가 이 문법을 지원하지 않아서 일까요,,??

  • c
쉽지않네 댓글 1 좋아요 2 조회수 199

포인터 질문드립니다

해결됨

독하게 시작하는 C 프로그래밍

개념이 잘 안 잡혀서 다시 한 번 여쭈고자 질문을 남깁니다. 변수 : 메모리 공간을 사용하는 방법 포인터 : 변수가 저장된 메모리 공간의 주소 변수에 바로 값을 대입 : 직접 지정 포인터로 접근해 값을 대입 : 간접 지정 제가 이해한 개념이 맞을까요?

  • c
  • 컴퓨터-구조
  • assembly-language
  • vc++
Kayden 댓글 1 좋아요 0 조회수 338

scanf("%d\n", &input)

미해결

독하게 시작하는 C 프로그래밍

수업을 듣다 궁금증이 생겨서 질문드려요~ scanf("%d\n", &input); 4입력시 4\n여서 종료하려면 \n하나가 더 필요 한거 까지는 이해가 됐습니다. 그후에 \n를 계속 눌러도 안넘어가지는게 어떤 것때문인지 궁금합니다. %d\n 형식을 사용하므로 형식에 안맞는 \n는 안읽고 %d\n의 형식만 읽는건가요? 아니면 %d\n 는 숫자와 (1개 이상의 공백문자)여서 엔터가 계속 입력되고 %d(다른정수)\n입력시 \n를사용하므로 %d만남기고 종료되는건가요? 형식이 달라서 안읽는건지 \n가 1개이상의 공백문자를뜻해서 여러번읽는건지 궁금합니다!

  • c
  • 컴퓨터-구조
  • assembly-language
  • vc++
조희선 댓글 2 좋아요 0 조회수 724

포인터에 저장되는 주소값의 자료형

해결됨

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

포인터 변수가 어떤 변수의 주소값을 저장한다는 것은 이해했습니다. 그런데 메모리의 '주소'는 어떤 자료형에 속하나요? 형식지정자 %p로 출력해보면 16진수로 나오는 것 같은데 정수형이라고 생각해도 될까요??

  • c
쉽지않네 댓글 1 좋아요 2 조회수 319

for문 증감 연산

해결됨

독하게 시작하는 C 프로그래밍

이 두 구문에서 차이는 증감연산자가 전위인지 후위인지 인데 for문에서는 전위든 후위든 작동 방식에 있어서는 차이가 없지 않나요? i = 0 일때 조건식을 검사해서 참이므로 i를 출력하고 i++든 ++i든 i의 값을 1 증가 시킨후에 다시 조건식을 검사하는 것으로 알고 있습니다. chat gpt에서 차이가 있다고 나오는데 설명이 명확하지 않아 여쭈어 봅니다! 정리하자면 전위와 후위의 근본적인 차이점은 알고 있지만 그것이 for문 증감식으로 쓰일땐 결과적으로 같은 동작 방식을 취하는게 아닌가 궁금합니다 감사합니다!

  • c
  • 컴퓨터-구조
  • assembly-language
  • vc++
psbtyu123 댓글 1 좋아요 0 조회수 314

인기 태그

인프런 TOP Writers

주간 인기글