수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

말 표현에서 궁금한점이 있습니다. 배열을 통째로 넘겨받으려면 매개변수로 배열을 선언할 수 있어야한다?

별햇님

2025.04.07

질문 제목 : 말 표현에서 궁금한점이 있습니다. 배열을 통째로 넘겨받으려면 매개변수로 배열을 선언할 수 있어야한다?배열을 함수 인자로 통째로 보내는 코드작성법이 뭔가요?질문 내용 :

포인터 부분만 3번째 정독 중입니다. 또 보니 확실하게 안넘어간게 또 .. 걸리네요 이렇게 질문 드립니다.

윤성우 열혈 c프로그래밍 310~311page
말 표현에서 궁금한점이 있습니다. 배열을 통째로 넘겨받으려면 매개변수로 배열을 선언할 수 있어야한다?

함수 호출 시 인자로 배열을 통쨰로 전달하는 방법에 대해서 생각해볼때 애석하게도 함수를 호출하면서 매개변수에 배열을 통재로 넘겨주는 방법은 존재하지 않는다며, 이유는

매개변수로 배열을 선언할 수 없어요!

란 말씀을 하시며 배열을 통쨰로 넘겨받으려면 매개변수로 배열을 선언할 수 있어야 한다. 하지만 이것이 허용되지 않으니 배열을 통째로 넘기는 것은 불가능한 일이다. 대신에 함수 내에서 배열에 접근할 수 있도록 배열의 주소 값을 전달하는 것은 가능하다..

라고 나오는데 , 뭐.. 주소 값을 전달 할 수가 있겠죠.

근데 여기서 배열을 통째로 매개변수로 못넘긴다는 말이 무슨 말인지 모르겠습니다.

실제 배열을 통째로 넘긴다고 했을 때 간략하게 코드로 보여주실 수 있으신가요

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 사랑해 2025-04-07

    답글 감사해요

    배열을 사용할 때 최대한 성능을 끌어올려주기 위해서 유효범위 체크도 해주지 않고, 초기화도 해주질 않습니다.

    이 부분 때문에 말씀드린 것입니다 ㅎ

  • 갅쥐누뉨 2025-04-07

    제가 말씀드린 초기화를 해주지 않는다는 이야기는 간단히 지역변수화 전역변수와의 차이를 예로 든 거였어요 ㅋㅋ

    int arr[10]이 지역변수이고 님처럼 초기화를 시키지 않았다면 쓰레기값을 갖게 될 것이지만,
    int arr[10]이 전역변수라면 int arr[10]={0,}과 동일하게 자동으로 초기화 해줄 겁니다.

  • 들찬 2025-04-07

    결국 효율면에서였군요.

    답변 감사합니다만,

    배열을 초기화도 해주질 않습니다라고 말씀하셨는데

    arr[]={0,} ;

    해줘야하는데, 이거랑 다른 말씀인가요?

  • 콩알눈 2025-04-07

    제가 알기로 효율때문에 그렇습니다.

    c언어의 제작 당시가 70년대였었습니다. 그 때는 현재보다 컴퓨터 성능이 매우 떨어진 대다가 c언어의 기반이 되는 철학은 성능우선이었거든요. 만약 님처럼 c언어의 배열을 통채로 넘겨주려면 복사를 해주는 동시에 시작주소부터 배열의 유효한 범위를 처음부터 끝까지 체크를 해줘야 했을 겁니다.

    c언어는 기본적으로 지역변수는 초기화해주질 않죠. 그것은 성능을 최대한 끌어올리기 위함이었습니다. 마찬가지로 배열을 사용할 때

  • 꼬붕 2025-04-07

    답변감사해요 계발자가 아닌 이상 조금 설명하시기 힘든 부분일거 같은데,

    배열도 같은 크기라면, 같은 위치의 배열값에 덮어씌우게끔 하면 될텐데,

    곧, arr1=arr2;가 동일 위치에 한해서 동일한 길이에 한해 덮어지게끔 곧, 대입이 되게끔 하면 될텐데 왜 못하게 했나요

  • 텐시 2025-04-07

    char arr1[50] = \test\;
    char arr2[50] = 0;

    arr2 = arr1;

    이 문법이요

    매개변수로 값을 넘겨주면

    int temp = 3;

    Func(int parameter)
    {
    ...
    }

    int main()
    {
    Func(temp);
    }

    뭐 요런식으로하면

    Func 함수를 콜할때

    매개변수 int parameter에 해당하는 메모리가 또 할당이 됩니다.

    그리고 그 메모리에 매개변수로 넘겨받은 값 3이 복사

  • 유라 2025-04-07

    답변 감사드립니다만,,
    C에서는 배열간에 대입 연산이 안되므로
    라는 말씀이 무슨 말씀이신가요?

  • 겨울 2025-04-07

    배열을 통째로 받으려면

    void Func(char ch[50])
    {
    ...
    }

    과 같은 함수 정의가 되야되는데...

    함수 매개변수 부분에 char ch[50] 이 부분이 문법적으로 허용이 안되서 그런다는 얘기 아닌가요?

    문법적으로 허용이 안되는 이유는 정확히 모르겠지만...

    배열 복사는 메모리 낭비도 심하고 C에서는 배열간에 대입 연산이 안되므로

    따로 값을 복사하는 과정도 추가되야 되고... 그래서 그럴수도 있고...

    아니면 이를 허용

번호 제 목 글쓴이 날짜
2700339 이거 결과값이 왜이런건지.. (4) 그댸와나 2025-07-04
2700313 파일 읽어서 저장하는데 빈파일일 경우 문재가 발생하네요.. (2) 크나 2025-07-03
2700287 구조체 동적할당 연습을 하는데 오류가 뜹니다...(해결) (3) 아련나래 2025-07-03
2700264 문자와 숫자 동시에 입력??? 글고운 2025-07-03
2700236 txt파일로만 쓰고 읽게 하려면 어떻게 해야 하나요..?? (8) 미국녀 2025-07-03
2700211 전위 연산자 (2) 어른처럼 2025-07-02
2700183 C에서 파일이름을 받고, 그 파일의 사이즈를 출력해줘야하는데 내용이 출력이 안되네요 ;ㅅ; 피스케스 2025-07-02
2700150 꼭좀 도와주세요ㅠㅠㅠ 호습다 2025-07-02
2700095 연산문제...질문... 오빤테앵겨 2025-07-01
2700070 while문 , 3의배수 출력하는 프로그램좀 짜주세욤. 횃불 2025-07-01
2700041 초보인데요 ㅎ 배열안에 배열을 집어넣을수 있나요?? 헛장사 2025-07-01
2700012 배열// (1) 전갈자리 2025-07-01
2699895 무한루프에 빠집니다.!! 해결좀부탁드려요 (10) 선아 2025-06-30
2699842 질문을 너무 많이 하네여.....죄송.... (2) 해님꽃 2025-06-29
2699816 오류 질문입니다.. (1) 해비치 2025-06-29
2699763 질문입니다 ! 꼭 좀 도와주세요ㅠㅠ (2) 미라 2025-06-28
2699555 c언어 다항식을 입력을 했는데 왜 출력이 안될까요? 피스케스 2025-06-27
2699528 C언어 포인터연산 질문입니다. (3) 안녕나야 2025-06-26
2699476 끌어올림;;달력 짜봤는데요 이 소스 줄일 수 있나요? - 스샷첨부 (2) 클라우드 2025-06-26
2699444 [좀 급함] system("explorer [주소] ") 문에 변수를 사용할 수 있나요? 알 2025-06-26
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com