열혈 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;
}
M | y |
| S | t | r | i | n | g | \0(Null 값) |
Y | o | u | r |
| S | t | r | i | n | g | \0(Null 값) |
O | u | r |
| S | t | r | i | n | g | \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;
}
<출력결과>
'코스웨어 > 16년 스마트컨트롤러' 카테고리의 다른 글
20160406_장진웅_업무일지_로봇제어_시리얼제어3 (0) | 2016.04.06 |
---|---|
20160328_업무일지_정우민_리눅스설정 (0) | 2016.04.06 |
20160401-업무일지-허도경-로봇제어-터미널2 (0) | 2016.04.06 |
20160331-업무일지-허도경-로봇제어-터미널 (0) | 2016.04.06 |
20160404_장진웅_업무일지_로봇제어_시리얼제어 (0) | 2016.04.05 |
20160330-업무일지-허도경-로봇제어-터미널 (0) | 2016.04.05 |
20160404_김도관_업무일지_C언어 기초및 비주얼스튜디오 디버깅모드 (2) | 2016.04.05 |
20160401_김도관_업무일지_C언어 기초및 라즈베리파이_Non-Canonical (0) | 2016.04.05 |