본문

[잡담] C언어 문자열과 정수변수 입력방식 차이

일시 추천 조회 919 댓글수 19


1

댓글 19

코드블럭이 뭐지...요세는 그런걸로 코딩하는가...;;

흥어왕!!파르티잔 | (IP보기클릭)118.235.***.*** | 21.12.16 19:13
흥어왕!!파르티잔

에...혼자 배우는 거라. 무거운건 육체만으로 충분해서T..T 가벼운 IDE를 찾다보니 VS말고 이걸 쓰게 되었습니다.

인민배우 심영 | (IP보기클릭)59.16.***.*** | 21.12.16 20:01

뭔가 예제부터 엄청어렵게 적으셨네요. int A; char B[10]; 이런식으로 변수명좀 다르게해주세요. 우선 정확힌 문자든 실수든 배열로하면 배열이름자체가 주소입니다. 문자만 주소가 되는게 아니에요. int A[10]; char B[10]; printf("A : %d, \n B : %d", A, B); 요렇게 출력해보시면 둘다 각변수의 주소값이 나옵니다

에스페란스 | (IP보기클릭)119.65.***.*** | 21.12.16 19:17
에스페란스

아...그렇군요...감사합니다...

인민배우 심영 | (IP보기클릭)59.16.***.*** | 21.12.16 19:48

드디어 포인터의 세계로 오셨군요. 환영합니다. "문자열 입력받을 때 쓰지 않는 이유는 배열의 이름 자체가 주소를 나타내기 때문이다." <- 맞습니다. 이 이유 때문입니다. "아....그렇다면 말이죠, 굳이 문자열만 저렇게 이름 자체가 주소를 나타내도록 하지 말고, 그냥 정수값이던 실수값이던 번거롭게 &빼먹어서 오류 나게 하지말고 문자열같이 이름 자체가 주소를 나타내도록 하면 않되나요?" <- 가능합니다. 이미 이걸 위해 정의된 문법이 있습니다. 예를 들어 int형 변수를 선언하실 때. int A라고 선언하면 A의 값은 "값"이지만 int* A와 같이 *을 넣어서 선언하면 A의 값은 이제 주소를 나타냅니다.

오잇스 | (IP보기클릭)116.121.***.*** | 21.12.16 19:19
오잇스

값이 아닌 메모리 주소를 참조하는 변수를 "포인터 변수"라고 부릅니다. 일반 변수로는 int A; scanf("%d", &A); printf("%d", A); 위와 같이 작성됩니다. A는 "값"을 의미하고 scanf 함수는 입력받은 값을 메모리상 "어디에" 적어야 하는지를 받기 때문에 변수 A에 값을 저장하고 싶으면 &A로 A의 주소를 주는 것이지요. 만약 포인터 변수를 쓴다면 같은 구조를 아래와 같이 써야 합니다. int* A = malloc(sizeof(int)); scanf("%d", A); printf("%d", *A); 한 줄씩 설명 드리겠습니다. int* A <- A라는 이름의 포인터 변수를 생성하라는 뜻입니다. A는 값이 아닌 메모리 상 주소를 가리키며 이 메모리 주소에는 int형의 크기만큼 공간이 할당되어 있을 거라는 뜻입니다. int* A = malloc(sizeof(int)); <- malloc 함수는 메모리 상에서 주어진 용량만큼 메모리를 잡아서 그 "주소"를 반환합니다. sizeof(int)는 int형의 크기가 몇인지 반환합니다. 따라서 이 구문은 메모리 상에서 int 형 크기만큼 공간을 잡아서 그 주소를 A라는 포인터 변수에 저장한다는 의미입니다. scanf("%d", A); <- 아시 듯이 콘솔에서 정수형으로 입력받아 A가 저장하고 있는 메모리 주소에 쓰라는 얘기입니다. printf("%d", *A); <- A앞에 붙은 *은 A가 저장하고 있는 메모리 주소가 아닌 그 주소에 저장된 "값"으로 읽겠다는 의미입니다.

오잇스 | (IP보기클릭)116.121.***.*** | 21.12.16 19:26
오잇스

그러고보니...교제 다음장에 Chapter 09 '배열과 포인터' 라고 나오는데 ....-..- 질문만 보고 어찌 아신거지 ... 권해주신 교제는 잘 보겠습니다. 아직 오질 않아서-..-

인민배우 심영 | (IP보기클릭)59.16.***.*** | 21.12.16 19:55

지금은 문법이 그렇구나 하고 넘어가시는 것이 좋습니다. 변수의 값과 주소에 대한 개념에 대한 것은 '포인터' 챕터에서 상세하게 다룰 것입니다. 포인터는 C를 공부하는데 가장 큰 고비중의 하나이며, 포인터를 이해하고 능숙하게 다룰 줄 알아야 C를 할 줄 안다고 할 수 있습니다. 포인터는 C가 메모리 주소에 접근하는 방법이며, C#, JAVA 같은 언어와 달리 로우레벨 엑세스가 가능해 지도록 해줍니다.

잉그람 | (IP보기클릭)125.133.***.*** | 21.12.16 19:22
잉그람

...예전에 VB 6.0 배울때는 '와, 혼자서 하는데 막 창이 뜨고 계산기도 만들고, 그림판도 만들수 있네?! 프로그레밍 개꿀! 나 좀 천재인듯' 했었습니다. 데니스 리치가 아직 살아있었으면 F-word 메일을 보냈을 텐데... 답변 감사드립니다.

인민배우 심영 | (IP보기클릭)59.16.***.*** | 21.12.16 19:57

정확히 이해하려면 메모리 할당까지 가야 어느정도 이해가 될 수도 있는데, 아직은 그냥 문법이 거지 같구나 하고 넘기세영 ㅎㅎ

루리웹-3649315747 | (IP보기클릭)221.163.***.*** | 21.12.16 19:28
루리웹-3649315747

그냥 문법이 거지같은 걸로 생각하겠습니다. 제가 멍청한게 아닙니다.

인민배우 심영 | (IP보기클릭)59.16.***.*** | 21.12.16 19:58

정적 메모리 단계에서는 이해하기 힘든 부분입니다. 그냥 이런 문법 이구나 하신 다음에 동적 메모리 할당을 시작 하시면서 다시 한번 보시면 이해가 편하실 겁니다.

분쇄쿠키 | (IP보기클릭)70.54.***.*** | 21.12.16 19:38
분쇄쿠키

다시 봐야 하다니T..T 답변 감사드립니다.

인민배우 심영 | (IP보기클릭)59.16.***.*** | 21.12.16 19:58
인민배우 심영

극단적으로 말하면 포인터 역할이 동적 메모리 사용을 위한거라...

분쇄쿠키 | (IP보기클릭)70.54.***.*** | 21.12.16 20:04

포인터 개념은 처음에 워낙 잡기 어렵다보니... 힘내세요

에레쨩 | (IP보기클릭)175.200.***.*** | 21.12.16 20:16
에레쨩

인민배우 심영 | (IP보기클릭)59.16.***.*** | 21.12.16 20:30

vs code가 가벼운ide입니다..이클립스보다도 오류없고 가볍고괜찮습니다

루리웹-6113790665 | (IP보기클릭)210.117.***.*** | 21.12.16 20:27
루리웹-6113790665

감사합니다.

인민배우 심영 | (IP보기클릭)59.16.***.*** | 21.12.16 20:31

Implicit conversion임. Char array인 A는 컴파일러가 암시적으로 &A[0]으로 바꿔서 넣어 줍니다.

SliceAndDice | (IP보기클릭)124.49.***.*** | 22.01.04 23:27
댓글 19
1
위로가기
세가좋어 | 추천 0 | 조회 295 | 날짜 2024.04.12
공돌이인생 | 추천 0 | 조회 105 | 날짜 2024.03.29
루리웹-1970043849 | 추천 0 | 조회 205 | 날짜 2023.12.18
질풍비장의패 | 추천 1 | 조회 589 | 날짜 2022.11.30
루리웹-3648796984 | 추천 0 | 조회 781 | 날짜 2022.11.23
루리웹-8641268934 | 추천 2 | 조회 700 | 날짜 2022.08.07
루리웹-4247021526 | 추천 2 | 조회 747 | 날짜 2022.07.25
루리웹-4746138650 | 추천 0 | 조회 680 | 날짜 2022.06.01
키라 요시카게 | 추천 1 | 조회 738 | 날짜 2022.05.24
우너무너 | 추천 0 | 조회 663 | 날짜 2022.05.14
키라 요시카게 | 추천 0 | 조회 649 | 날짜 2022.04.03
와이플 | 추천 0 | 조회 652 | 날짜 2022.01.14
와이플 | 추천 0 | 조회 675 | 날짜 2022.01.13
와이플 | 추천 1 | 조회 821 | 날짜 2022.01.13
인민배우 심영 | 추천 0 | 조회 879 | 날짜 2022.01.09
인민배우 심영 | 추천 0 | 조회 729 | 날짜 2022.01.08
오잇스 | 추천 0 | 조회 647 | 날짜 2022.01.05
인민배우 심영 | 추천 0 | 조회 538 | 날짜 2022.01.02
인민배우 심영 | 추천 0 | 조회 663 | 날짜 2021.12.31
인민배우 심영 | 추천 0 | 조회 1034 | 날짜 2021.12.30
인민배우 심영 | 추천 1 | 조회 655 | 날짜 2021.12.27
salvare545 | 추천 0 | 조회 611 | 날짜 2021.12.27
_ 식봉이는 식봉해 | 추천 4 | 조회 1175 | 날짜 2021.12.27
인민배우 심영 | 추천 0 | 조회 702 | 날짜 2021.12.25
인민배우 심영 | 추천 1 | 조회 812 | 날짜 2021.12.24
인민배우 심영 | 추천 0 | 조회 919 | 날짜 2021.12.16
V1046R-MAHORO | 추천 1 | 조회 510 | 날짜 2021.12.14
인민배우 심영 | 추천 0 | 조회 713 | 날짜 2021.12.10

1 2 3

글쓰기
게시판 매니저