본문 바로가기

HackerFactory 초급문제 8 보호되어 있는 글입니다. 더보기
c언어에서 return 값을 2개 이상 주는 방법 인자 값으로는 여러 개를 전달할 수 있지만 return 값은 여러 개를 전달 할 수 있을까?※이 글은 잘못된 정보를 가지고 있습니다. 밑에 댓글을 참조해주세요. return a,b; 이러한 식으로 전달하는 방법이 아닌 메모리주소와 변수(구조체)를 이용한 방식입니다.c언어에서는 return a,b; 이러한 방식은 없다고 합니다. 2가지 방법이 있다. 1 . 포인터를 이용한 방법 2. 구조체를 이용한 방법 우선 1번 포인터를 이용한 방법이다. 포인터를 이용한 방법, 즉 call by reference인데 이것은 솔직히 return값을 여러 개 전달했다?라고 말하기는 좀 그렇고 간접 참조를 이용하여 메모리에 값을 바꿔주는 그런 형식인 것 같다. 다음은 구조체를 이용한 방법이다.이 방법은 구글 검색을 통해서 알.. 더보기
포인터에서 헷갈렸던 부분 포인터에서 헷갈렸던 부분은 많았지만 그 중에서 32비트 환경과 64비트 환경에서 포인터의 차이점과 포인터의 바이트 수에 대해서 글을 쓰겠다. 1) 32비트 환경과 64비트 환경에서의 포인터의 차이점 32비트 = 4바이트 => 2^32만큼 주소를 표현할 수 있다는 말이다. 64비트 = 8바이트 => 2^64만큼 주소를 표현할 수 있다는 말이다. 따라서 헥사값으로 주소를 표현한다면 32비트 환경에서 주소의 자릿수는 8이고 64비트에서는 16이다.(나는 32비트 환경에서는 주소가 4바이트만큼표현 될 수 있으니까 256(1바이트)*4까지 표현이 가능하다고 생각했는데 이것은 잘못된 것 ㅠㅠ) 2) 포인터의 바이트 수 1번 - char * ptr1;2번 - int * ptr2; 위의 두개의 포인터 변수의 공통점과 .. 더보기