p[i]가 *(P+i)랑 동치일걸요? 아닌가?
프로그래밍 & 코딩 | 구독자 30명 | 식봉이는 식봉해
-
오잇스21.12.27 14:44
-
오잇스예. 그런데. printf로 출력할때 (p+i)는 *를 붙이는데 왜 p[i]는 *p[i]라고 안 쓰는지 오히려 scanf로 값을 받을 때는 &p[i]로 배열에서 값을 받는 것 같이 쓰는지.. 이게 흰색과 백색처럼 표현만 다른 것인지..아니면 무언가 깊은 의미의 차이가 있는 것인지... 책도 마지막 장 밖에 안 남았는데...내가 이러려고 시작했나 자괴감 들고 괴롭네요 ㅎㅎ인민배우 심영21.12.27 15:30
-
인민배우 심영C언어 건들인지는 너무 오래되서 포인터 정확하게 기억 안나는데 나름 기억나는데로 설명이 쉽도록 써볼게요. 배열의 특이한 설정(?)과 포인터가 섞여서 헤깔리실 수 있어요. 1. 배열명은 해당 배열의 [시작 주소값]을 의미한다. 2. 배열명 + i 를 하면 배열 형태의 [크기값이 자동 적용되서 계산된다]. (char 형이면 i가 1씩 증가, int 형이면 i가 4씩 증가 이런식) 제 기억으로는 *는 값을 가져올 때 쓰는거고 &는 주소를 가져올 때 쓰는거로 기억합니다. 예를 들어 p[i]에 있는 "값이(value)" 1000이라 할 때, *p[i]를 쓰면 "메모리 주소 1000에 있는 값"을 가져와서 배열과 관련없는 쓰레기값이 나와서 이렇게 쓰면 안되는거고, &p[i]로 쓰는 이유는 p[i]는 이미 배열 특성상 주소가 자동으로 적용되어 해당 메모리에 접근한 값이잖아요? 그럼 거기 값을 가지고 있는 주소를(&) 가져 와야 해당 값이 입력되어 있는곳에 데이터를 입력 가능하겠죠? 반대의 경우를 보자면 &p[i] 대신, 주소만 쓰여있는 (p+i) 이렇게 써도 작동될거에요. scanf("%d", p+i); 이런식으로요. 즉, 배열은 특이하게 배열명이 배열의 시작 주소값을 의미하고 있어서 이로 인하여 (p+i)는 주소값을 의미하므로, &p[i]와 같다. { (p + i) == &p[i] } (p+i)는 주소값이기에, 해당 데이터에 접근하려면 *를 붙여서 *(p+i) 이렇게 접근해야한다. 고로 *(p+i)는 p[i]와 같다. { *(p+i) == p[i] } 잘못 기억하고 있는것일 수 있...진 않겠죠 ㅠㅠ? 나름 C언어 재미있어서 옛날에 한참 파고들었는데 잘못 기억하고 있는것이라면 죄송하면서 제가 너무 슬플거 같네요. 아무튼 이미 이해를 완료하셨을 수 도있지만 제 기억이 맞다는 하에 나름 최대한 이해하기 쉽게 적어봤습니다. 조금이라도 도움이 되시길 바래요. 이런 개념이 잘 잡혀있으면 이중이든 삼중이든 다 응용이라 별거 없으실겁니다.노엘 버밀리온21.12.30 23:30
-
노엘 버밀리온너무 오랜만에 C언어 공부하시는 분을 봐서 흥분해서 글을 길게 썻는데 혹시라도 제가 틀렸다면 말씀해주세요... 쪽팔림을 감수하고 반성하면서 나중에 다시 기회잡아 재공부 하겠습니다 ㅠㅠ노엘 버밀리온21.12.30 23:34
-
노엘 버밀리온답변 감사드립니다. 공부하다 보니 용어가 너무 혼동되어서 포인터는 포인터인데 배열은 [정수 포인터]라고 표현하기도 하고......union을 보니 예전 엔지니어 분들은 정말 메모리를 아껴(?)쓰려고 고생 많았겠구나...포인터도 그런 노력에서 나온게 아닐까...짐작만 하고 있습니다. 장문의 답변 감사드립니다.인민배우 심영21.12.31 00:41
루리웹 오른쪽
루리웹 유머
-
공룡 디오라마 (고성 상족암)
-
포천으로 접대캠핑을 받고 왔습니다
-
아기상어는 라볶이가 먹고 싶다
-
삿포로에서 덕질 탐방
-
제주도 강력추천 돈까스
-
간짜장+탕수육
-
춘천 "오시드래요"
-
닭강정 너무 좋아요
-
쉬는날 간단한 요리와 한잔
-
발키리 런치 베이스 제작중
-
고쇼군 애니버전 커스텀헤드
-
투하트 리메이크 프리미엄 에디션
-
퍼스트 건담 가족 사진
-
팔도 비빔칩
-
썬더볼트 스팅레이 모불리대
-
게임 맛을 더 깊게 만들 비법 소스
-
선택지의 악마가 만든 탁월한 서사
-
모아봐요 인간의 숲
-
아?홉 왕들의 전쟁
-
[검은사막] 이벤트 모아보기
-
인터넷 가입/변경 지원금 확인
-
전자 회로 만드는 기계.gif
-
애미 젖을 물어뜯는 새끼.gif
-
요즘 스톱모션 애니메이션 퀄리티.gif
-
텍사스 홍수로 최소 51명 사망, 어린이 27명 실종.jpg
-
강아지 이발이 중요한 이유.MP4
-
안녕 자두야 Z.jpg
-
아기고양이 두마리를 같이 키우면 안되는 이유
-
다친 새에게 먹이를 주고 보살펴주면 생기는 일
-
개구리알 뭉쳐놓은거같은 과일
-
어떤 아줌마가 동상으로 박제 된 이유
-
불법 건축물 철거 현장.gif
-
남친이 전여친 못잊고 둘이 키스까지 하는데 쏴죽여도 합법임?
-
제주도 절대로 가면 안되는 이유 중 甲
-
아기침대팝니다(미사용)
-
검색포털 '다음' 의 기묘한 행보
-
이재용 회장님 온다고 와인을 준비해달라는 예약.jpg
-
애리조나 여자들이 1초만에 머리 말리는 방법
-
씹덕으로서의 우영우 작품.jpg
-
아?홉 왕들의 전쟁
-
[검은사막] 이벤트 모아보기
-
인터넷 가입/변경 지원금 확인
루리웹 뉴스 베스트
루리웹 유저정보 베스트
PC/온라인
비디오/콘솔
모바일
-
7월에 출시되는 PC·모바일 게임 목록
-
‘에이스 컴뱃’ 30주년 기념 컨트롤러, 에이스 컴뱃 게이밍 컨트롤러 프로
-
낯선 게임에서 리볼트의 쇳내가? RC카 레이싱 ‘리차지’ 월말 앞서 해보기
-
‘로드나인’ 1주년, 소통과 즐길 거리 부재까지 정상화한다
-
㈜넥슨 ‘블루 아카이브’ 글로벌 PC 버전 오늘(4일) 스팀에 정식 출시
-
㈜넥슨 ‘빈딕투스: 디파잉 페이트’, 글로벌 알파 테스트 8일간 131년치 플레이 시간 기록
-
브라운더스트2, 2주년 오프라인 이벤트 현장
-
스마일게이트, 신작 RPG ‘카오스 제로 나이트메어’ 제작 발표 영상 ‘더 퍼스트 쇼케이스’ 공개 예고
-
‘히어로즈 오브 마이트 앤 매직: 올든 에라’ 후디드 호스와 손잡다
-
㈜앤유, PC MMORPG '벨라토레스' 개발자 인터뷰 영상 오늘(2일) 공개, 8일(화) Steam(스팀) CBT 시작
-
7월에 출시되는 한국어 콘솔 게임 목록
-
스트리트 파이터 6×에스파 with 나이비스
-
‘프린세스 메이커: 예언의 아이들’ 금주 4일 스팀 앞서 해보기로
-
나쁜 상상은 금물! 리얼 사이즈 '가디안' 오는 9일 정식 발매
-
앤썸, 2026년 1월 12일 서비스 종료 결정
-
SIE, PS5와 블랙핑크 ‘리사’(LISA)의 프로모션 영상
-
Xbox 게임패스, 7월 1차 추가 타이틀 소개
-
시즌 3에서 찾아오는 변화와 개편 사항들은? - 퍼스트 디센던트 1주년 쇼케이스
-
거대 블랙 기업과 사이보그 여전사의 대결, 전신 머신걸
-
‘사이버펑크: 엣지러너 2’ 애니메이션 시리즈 제작 발표
-
7월에 출시되는 PC·모바일 게임 목록
-
조이시티, 신작 모바일 전략 게임 ‘바이오하자드 서바이벌 유닛' 타이틀 공개
-
‘로드나인’ 1주년, 소통과 즐길 거리 부재까지 정상화한다
-
㈜넥슨 ‘블루 아카이브’ 글로벌 PC 버전 오늘(4일) 스팀에 정식 출시
-
시프트업 ‘승리의 여신: 니케’, 니어: 오토마타 콜라보 이벤트 복각 및 신규 업데이트 ‘OVER THE HORIZON’ 출시
-
㈜카카오게임즈, 모바일 RPG ‘가디언 테일즈’ 5주년 업데이트 사전등록 지난 6월 30일(월) 시작
-
브라운더스트2, 2주년 오프라인 이벤트 현장
-
㈜엠게임, 파이펀게임즈와 ‘열혈강호:귀환’ 공동 퍼블리싱 계약 체결
-
스마일게이트, 신작 RPG ‘카오스 제로 나이트메어’ 제작 발표 영상 ‘더 퍼스트 쇼케이스’ 공개 예고
-
주식회사 세시소프트 '천상비M', 카카오엔터테인먼트 인기 웹툰 '북검전기' 콜라보 발표
루리웹 유저정보 베스트