프로그래밍

 3198, 1/160 회원가입  로그인  
   smile_mut
   [C 언어] 포인터 질문

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=2992 [복사]


php 코딩을 하다 열심히 배운 C를 까먹기전에 다시 한번 리뷰 하던중

갑자기 이해가 안돼는 부분 :(

#include <stdio.h>
#include <string.h>

void Replace(char *theString);

int main(){
        char string[10] = "hello";
        Replace(string);
        puts(string);
}

void Replace(char *theString){
        int len = strlen(*theString);
        *theString[len -1] = '\0';
}
// string 에서 마지막 글자를 '\0' 로 바꾸는 건데요

함수 Replace 에 있는 두 *theString 들을 그냥 theString 으로 바꾸니 프로그램이 제대로 돌아가더군요 ....
왜 theString 이죠? 원래 theString은 "string" 의 주소를 가지고 있고 *theString 을 이용해야지 value 를 바꿀수
있는거 아닌가요?

  Hit : 4514     Date : 2011/05/12 12:24



    
janvier7 배열의 이름이 포인터이기 때문에... 2011/05/12  
janvier7 strlen함수는 인자로 포인터상수를 전달받아 그 길이를 리턴합니다.
배열의 인자로 문자열을 전달하였기때문에 배열의 이름이 포인터상수가 되는것입니다.
그렇기 때문에 strlen함수의 인자가 *theString이 아닌 theString이 되는것이죠

theString[len-1] = '\0' 과 *(theSting+(len-1)) = '\0'
는 같은 표현입니다.
2011/05/12