본문 바로가기
코스웨어/16년 스마트컨트롤러

20160405_장진웅_업무일지_로봇제어_시리얼제어2

by 알 수 없는 사용자 2016. 4. 5.
728x90
반응형

열혈 C (301 page)


char str1[] = "My String";

char str1[]는 Stack 영역이고, "My String"은 Code 영역이다.


  #include <stdio.h>

  int main(void)

  {

      char str1[] = "My String";

      char *str2 = "Your String";


      printf("%s %s \n", str1, str2);

      printf("str1 address: %p \n", str1);

 

      printf("main address %p \n", main);

      printf("str2 address: %p \n", str2);

      printf("stack address: %p \n", &str2);


      str2 = "Our String";

      str1[0] = 'X';

      printf("%s %s \n", str1, str2); 

      return 0;

  }

 

\0(Null 값) 


 

S

g

\0(Null  값) 


 

\0(Null 값) 




Code 

 Data

 BSS

 heap

 Stack



Code 영역은 원천적으로 봉쇄돼어 있다. 그 이유는 ATmega 같은 경우에는 Code 영역이 Flash memory 영역이기 때문이다.

즉, 윈도우에서 Code 영역을 사용하도록 권한을 줬다고 해서 Code를 사용해도 된다는 것은 아니다.(임베디드 입장에서)


 #include <stdio.h>


 int main(void)

 {

     char *cpStr="asdfasdfsadfsadf \n";

     char caStr[20];

     printf("asdfasdfsadfsadf \n");

     printf(cpStr);

     caStr[0]='H';

     caStr[1]='E';

     caStr[2]='L';

     caStr[3]='L';

     caStr[4]=0;

     printf(caStr);

     //printf("\n");

putchar('\n');

    return 0;

 }

<출력결과>




728x90