PROGRAMMING/C & C++

11. [C / C++] ๋ฌธ์ž์—ด ์ƒ์ˆ˜์™€ ํฌ์ธํ„ฐ

๐’ฎ๐’ฎ๐ผ๐’ฉ_0 2019. 5. 24. 00:27

 

1. ๋ฌธ์ž์—ด ์ƒ์ˆ˜(๋ฆฌํ„ฐ๋Ÿด)

 

๋ฌธ์ž์—ด ์ƒ์ˆ˜๋Š” "HelloWorld"์™€ ๊ฐ™์ด

ํ”„๋กœ๊ทธ๋žจ ์†Œ์Šค ์•ˆ์— ํฌํ•จ๋œ ๋ฌธ์ž์—ด์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

(๋ฆฌํ„ฐ๋Ÿด : ์†Œ์Šค์ฝ”๋“œ์˜ ๊ณ ์ •๋œ ๊ฐ’์„ ๋Œ€ํ‘œํ•˜๋Š” ์šฉ์–ด

์ •์ˆ˜, ๋ถ€๋™ ์†Œ์ˆ˜์  ์ˆซ์ž, ๋ฌธ์ž์—ด ๋“ฑ๋“ฑ)

 

๋ฌธ์ž์—ด ์ƒ์ˆ˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ์ค‘์—์„œ DATA ์˜์—ญ์— ๋“ฑ๋ก๋œ๋‹ค.

(๋ฌธ์ž์—ด ์ƒ์ˆ˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ์ค‘์—์„œ

ํ…์ŠคํŠธ ์„ธ๊ทธ๋จผํŠธ(text segment)๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ํŠน์ˆ˜ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์ €์žฅ๋œ๋‹ค.

ํ…์ŠคํŠธ ์„ธ๊ทธ๋จผํŠธ๋Š” ์ฝ๊ธฐ๋Š” ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์šฐ๋ฆฌ๊ฐ€ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ด๋‹ค.

read only data ์˜์—ญ)

 

 

๋จผ์ € ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

๋ชจ๋“  ๋ณ€์ˆ˜๋Š” ๋ฐ์ดํ„ฐ ์„ธ๊ทธ๋จผํŠธ(data segment)๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ์˜์—ญ์— ์ €์žฅ๋œ๋‹ค. (STACK, HEAP์˜์—ญ)

๋”ฐ๋ผ์„œ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ pName1๋„ ๋ฐ์ดํ„ฐ ์„ธ๊ทธ๋จผํŠธ ์˜์—ญ์— ์ƒ์„ฑ๋œ๋‹ค.

๋ฌธ์ž์—ด ์ƒ์ˆ˜ "HelloWorld"๊ฐ€ ์ €์žฅ๋œ ์ฃผ์†Œ๊ฐ€ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ pName1์— ์ €์žฅ๋œ๋‹ค.

 

 

 

๋ฌธ์ž์—ด ์ƒ์ˆ˜๊ฐ€ ํ…์ŠคํŠธ ์„ธ๊ทธ๋จผํŠธ์— ์ €์žฅ๋˜๋ฏ€๋กœ,

๋ฌธ์ž์—ด ์ƒ์ˆ˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋งˆ์Œ๋Œ€๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜๋Š” ์—†๋‹ค.

๋”ฐ๋ผ์„œ

char* pName1 = "HelloWorld";

strcpy(pName1, "Goodbye");

์ด์™€๊ฐ™์ด ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•˜์—ฌ ๋ฌธ์ž์—ด ์ƒ์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ํ•˜๋ฉด,

์ปดํŒŒ์ผ ์˜ค๋ฅ˜๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š์ง€๋งŒ ์šด์˜์ฒด์ œ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰์ด ์ค‘์ง€๋œ๋‹ค.

 

 

char* pName1 = "HelloWorld";

pName1 = "Goodbye";

ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ p๋Š” ๋ฐ์ดํ„ฐ ์„ธ๊ทธ๋จผํŠธ์— ์žˆ์œผ๋ฏ€๋กœ ์šฐ๋ฆฌ๊ฐ€ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋ฌธ์ž์—ด ์ƒ์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ p์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

char pName[] = "HelloWorld";

strcpy(pName, "Goodbye");

pName์€ ๋ฐฐ์—ด์ด ๋˜๊ณ , ๋ฐ์ดํ„ฐ ์„ธ๊ทธ๋จผํŠธ์— ๋ฐฐ์—ด์ด ์ €์žฅ๋œ๋‹ค.

๋”ฐ๋ผ์„œ ๋ฌธ์ž ๋ฐฐ์—ด์€ ์šฐ๋ฆฌ๊ฐ€ ์–ผ๋งˆ๋“ ์ง€ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.