#include <stdio.h>
void mo(char a)
{
a++;
}
void main()
{
char *a;
char g[9]={'a','b','c','d'};
a=g;
printf("%s\n",a);
mo(a);
printf("%s\n",a);
}
이걸 해봤는데 둘다 값이 abcd로 나오네
그럼 mo 함수 안의 a++은 메인에 영향을 못준다는건데 포인터를 call-by-ref 로 쓸순 없나?
#include <stdio.h>
void mo(char a)
{
a++;
}
void main()
{
char *a;
char g[9]={'a','b','c','d'};
a=g;
printf("%s\n",a);
mo(a);
printf("%s\n",a);
}
이걸 해봤는데 둘다 값이 abcd로 나오네
그럼 mo 함수 안의 a++은 메인에 영향을 못준다는건데 포인터를 call-by-ref 로 쓸순 없나?
mo(&a)
*a++
니가 뭘 궁금한지도 알고 뭘 하고싶어서 쓴건지도 알겠지만 너는 니가 뭘 한지 모르는구나
char형 포인터 변수 a 는 배열로 선언된 g의 주소값을 얻어왔어
그리고 mo 함수에 포인터 주소를 넘겨줬지
얼래 ㅋㅋ 잘못말했다
그 mo 함수 안에서는 포인터 주소를 1 증가시켰어
야 내가 병신이다
만약 여기서 a++ 한 주소를 어딘가에 받아놨다면 그 주소를 통해 출력한 결과는 bcd가 되겠지만
a 는 여전히 변함 없이 \'a\'를 가리키고 있지
?형 그러니깐 포인터를 참조같이 쓸수있는 방법은 없어?
참고로 니가 main 안에 선언한 변수와 mo 함수 안에 선언된 변수는 이름과 전달받은 주소값만 받고 다른 변수라는것을 명심
a++; return a; 하고나서
그럼 같은 변수로 쓸순없어? 보통은 &써서 참조해서 쓰잖아 근데 포인터는 그렇게 쓸수 없나?
char b = mo(a); 한다음
return으로 하지 말구
printf(\"%s\", b) 하면 bcd가 출력되긴 하겠지
근데 사실 전에 이 얘기가 한번 갤에 거론된적이 있는 것 같은데 결론이 뭔질 못봄ㅋ
= 나도 모름
그냥 변수하나 더 잡아서 거기다 리턴값받고 하면 당연히 되는데 참조형식으로 할순 없냐는거징.. ㅠㅠ
void mo(char &a){*a++;} 이렇게 하면 안되나??
에라뜸 ㅠ
mo(&a); 하고 void mo(char **a) { (*a)++; } 해라
C 언어라면 : mo(&a) 로 호출해야 하고, void mo (char **a) { (*a)++}
*a[0]++;
C++ 언어라면 : mo (a) , void mo(char *&a) { a++; }
이중포인터네
앗싸 정답이당!
앗싸 내 무식함을 깨달았당
/? : 축하해. 정답을 맞췄네. 상품은 1. 삼성 냉장고 2.삼성 스마트 tv . 골라봐~
레노미나 형 완전 쎅쓰하심 존나 감사 ㅠㅠ
? 가 먼저 대답했어. ? 가 고른 상품으로 금주까지 배송해줘 ㅋㅋ
3. 나만을 사랑해줄 여자
?: 기술적으로 개발불가능해. 이건 물리법칙에 위배되는거라 구현 불가능. 미안해.
으............................. 냉동인간이 되서 300년 뒤에 깨어나고싶다