시도하는코딩
247
2019-12-05 23:35:07
4
464

C언어 scanf질문


scanf("%d %f",&변수,&변수); 처럼 정수나 부동소수점형에는 &를 붙이는이유가 그 변수의 주소에 값을 입력하기 때문에 &를 붙이고

scanf("%s",배열이름); 처럼 문자열은 배열이름 자체가 배열의 첫번째 원소의 주소값이기 때문에 &를 안붙여도 되는 개념이 맞나요?

0
  • 답변 4

  • monty
    101
    2019-12-05 23:47:15 작성 2019-12-05 23:49:19 수정됨

    scanf() 라는 함수에 변수의 주소를 넣어줘야 변수의 주소를 가지고 변수를 찾아 변수값을 변경해줄 수 있겠죠

    그래서 scanf()에 변수의 주소를 인수로 넣어주려고 변수주소를 리턴하는 &를 변수앞에 붙인겁니다.

    배열관한건 "문자열이여서" 라는 말을 붙일 필요는 없고요 그냥 배열이름 자체가 배열첫번째 원소의 주솟값 입니다.

  • 시도하는코딩
    247
    2019-12-05 23:56:11

    monty

    배열이름 자체가 배열첫번째 원소의 주솟값인것은 알겠습니다.

    c언어 책에서는 문자열을 입력할시에만 &를 안붙인다고 나와있습니다.

    이것은 왜그런것인가요? 왜 안붙이는 건가요?

  • defult
    9k
    2019-12-06 00:08:05 작성 2019-12-06 00:08:24 수정됨

    c언어에 문자열클래스(string)는 존재하지않기에 char의 배열이 곧 문자열입니다.

    그래서 c언어의 문자열은 그냥 배열이라 배열의 기준으로 동작합니다

  • 시도하는코딩
    247
    2019-12-06 07:34:49

    defult

     감사합니다

  • 로그인을 하시면 답변을 등록할 수 있습니다.