스택 질문입니다....

스택 질문입니다....

작성일 2005.04.09댓글 1건
    게시물 수정 , 삭제는 로그인 필요

교수님이 숙제를 내주신건데요....

 

스택을 이용해서 해야되는데요~

 

교수님께서 모라고 말씀하셨냐면요....

 

------------------------------------------------------------------------------------------

 

" 문자열을 가리키고 있는 포인터가 스택에 들어간다.

 

   만약 It is cat 이 메모리 상에 1000번지에 들어가 있다면,

 

   1000을 스택에 넣는것이다. 이걸 넣고 꺼내봐라..

 

  스택에 들어가는 데이타 타입은 char *형으로 한다..... "

 

--------------------------------------------------------------------------------------------

 

생각이 잘 안나서 두서없이 막 적었는데요.....

 

머........이 숙제 어떻게 하라는건가요?

 

간단히 말고 자세히 어떻게 하면 되겠다....는 식으로 적어주세요 ㅠ ㅠ

 

프로그램 안 짜주셔도 됩니다....ㅠ ㅠ ...

 

(사실 짜주시면 고맙지만,,,,,, 숙제는 제가 해야하는거겠쬬 ㅠ ㅠ....)

 



profile_image 익명 작성일 -

이 질문은 C의 변수 구조에서 전역변수와 함수와의 관계를 정확히 이해 해야 합니다.

 

아주 기본적인 것인데 프로그램 입장에서 보면 쉽게 이해가 되지 않지요.

이것은 CPU을 설계하고 C로 프로그램하는 개발자라면 쉽은 내용이지만 시스템 프로그래머는 익숙하지 않은 것이죠. 지역변수는 기본적은 함수에 넘길 때 stack을 사용 합니다. 물론 이것을 기계어로 보면 쉽습니다. 자개한 구조는 다음 포스트를 참고 하세요.

http://blog.naver.com/dolicom     C의 변수(static auto / global)와 함수 호출 과정

http://blog.empas.com/dolicom   C의 변수(static auto / global)와 함수 호출 과정

테마 : C언어의 이해

 

만약 stack의 값을 출력하려면 다음의 프로그램을 참조 바랍니다.

[질문-4313393] 함수콜시 스택포인터를 VC++로 보는 방법은.........

 

#include < stdio.h >

 

int main(int argc, char* argv[])
{
   char *msg = "It is cat";

   char *pformat = "msg=0x%08X\n";

 

    printf(pformat, msg);

 

   void printmsg(char *msg);
   printmsg(msg);

   return 0;
}

 

void printmsg(char *msg)
{
    printf(msg);
    printf("\nmsg=0x%08X\n", msg);
}

printf나 printmsg의 포인터를 넘길 때, string의 포인터는 모두 스택에 넣고 함수를 호출 합니다.

정수형도 마찬가지 입니다.

 

#include < stdio.h >

 

int main(int argc, char* argv[])
{
   int res;

    int add(int,int);

 

   res = add(10,20);

   printf("10 + 20 = %d\n",res);

   return 0;
}

 

int add(int n1, intn2)
{
    return n1+n2;
}

이 때 add로 인수 전달 할 때도 stack을 이용 합니다. 10,20을 stack에 넣고 add에서 stack에서 읽어 다하고 결과는 레지스터에 넣고 ret 명령으로 호출한 다음으로 이동 합니다.

 

 

사회복무요원 장기대기면제 스택질문

사회복무요원 5스택을 쌓으면 재검받아야 장기대기면제되는건가요? 아니면 그낭... 아래 항목을 추가질문으로 적어주시면 장기대기 면제와 관련된 내용을 자세히...

블루스택 질문

블루스택 다시 시작 하고 들어가는데 계속 안되고 똑같이 다시 시작 해도 안되요 안녕하세요. 블루스택은 오류가 좀 많고 무겁습니다. LD Player 같은것으로 사용해보시길...

원신 픽업 천장스택 이월 관련

... 예를 들자면 제가 이번에 캐릭터 이벤트 기원-2(호두) 에서 스택을 쌓은게 다음번에 나오는 그냥 캐릭터 이벤트 기원(라이오슬리)로도 이월되냐는 질문입니다. 답변...

스택 pop연산 질문

팝이 스택에서 top값을 지우는거라고 배웠는데 저 함수가 잘 이해가 안됩니다.. e에... 스택에선 top으로 스택의 맨 위에 있는 아이템을 식별을 합니다. 그래서 top이...

아이패드 스택질문

그 실수로 삭제한 스택 어디서 다시 넣을수있나요 그리고 웬만하면 디폴트값으로 셋팅된거면 더더욱 좋은데 가운데 스택이요 안녕하세요. 아이패드 스택에서...

프로그래밍 스택프레임 질문

... 저장되고 스택포인터는 반환주소를 가리키고있는게 맞나요 맞다면 callq로 호출된 top의 스택프레임은 스택에 최상단에 저장되어서 스택포인터가 다시 옮겨지는게...