int num = 10; int* ptr = &num ptr은 num의 주소를 담고 있고 *ptr을 하면 num의 주소에 접근하여 그 값을 지목한다 정도로 알고 있는데요 (틀렸다면 지적해주세요.)
문자열 포인터를 사용하는데 있어서 애로사항이 있습니다.
char* tmp = "OOOXXXOXOXOXOXOXOXX"
라고 하면 tmp에는 저 문자열의 시작 주소가 담기는 것이고 printf("%s",tmp)라고하면 tmp의 시작 주소열에 해당하는 부분 부터 널 문자를 만날때까지 출력하는 것으로 이해하고 있는데요, *tmp 를 실행하게 된다면 제 생각은 위의 숫자를 다룰때 처럼 tmp의 주소에 접근하여 그 주소의 첫번째 값을 의미한다 인데요, 실제로는 이게 실행이 되질 않습니다. 뭐..*(tmp+1) 은 tmp배열의 1번째 인덱스를 출력한다 이런 식입니다.
1. 왜 실행이 안되는지 제가 잘못 알고있는 부분에 대해서 알려주세요
2.검색을 하다가 아래 코드를 발견했는데요 여기서 for문에서 *str이 의미하는바가 무엇인가요
coglyi 4년 전
인터넷에 검색을 열심히 해봤는데 제가 원하는 속시원한 답변이 없더군요..
지금 군인인데 학교 복학전에 까먹은 C언어 다시 공부하고 들어가려고 하는데 좀 힘이드네요
int num = 10;
int* ptr = &num
ptr은 num의 주소를 담고 있고 *ptr을 하면 num의 주소에 접근하여 그 값을 지목한다 정도로 알고 있는데요 (틀렸다면 지적해주세요.)
문자열 포인터를 사용하는데 있어서 애로사항이 있습니다.
char* tmp = "OOOXXXOXOXOXOXOXOXX"
라고 하면 tmp에는 저 문자열의 시작 주소가 담기는 것이고 printf("%s",tmp)라고하면 tmp의 시작 주소열에 해당하는 부분 부터 널 문자를 만날때까지 출력하는 것으로 이해하고 있는데요, *tmp 를 실행하게 된다면 제 생각은 위의 숫자를 다룰때 처럼 tmp의 주소에 접근하여 그 주소의 첫번째 값을 의미한다 인데요, 실제로는 이게 실행이 되질 않습니다. 뭐..*(tmp+1) 은 tmp배열의 1번째 인덱스를 출력한다 이런 식입니다.
1. 왜 실행이 안되는지 제가 잘못 알고있는 부분에 대해서 알려주세요
2.검색을 하다가 아래 코드를 발견했는데요 여기서 for문에서 *str이 의미하는바가 무엇인가요
for(;*str;str++) printf("%s\n",str);
printf("%s",*str);