沖林さんがんばれ!
なんか、かわいそうになってきた><がんばってください!
C/C++のポインタの機能--配列との関係 - builder by ZDNet Japan
ところで
僕はちゃんと説明できるかな><
少しでも言葉や概念が変だったら教えてください><
*s
char *s = "hoge";
コードがロードされたときに文字列もメモリにロードされて、実行時にスタックにポインタ変数ができて文字列を指す。
文字列がロードされたメモリのページ(?)には、書き込み権限が付加されないので文字列の内容を書き換えることはできない。
.cstring str: .ascii "hoge" .text .globl _main _main: pushl $str
↑イメージ的にはこんな感じ
s[]
char s[] = "hoge";
コードがロードされたときに文字列もメモリにロードされ、実行時にスタックポインタがガバッとずらされて、その文字列がスタック領域にコピーされる。
スタック領域が存在しているページ(?)には、書き込み権限が付加されているので文字列の内容を書き換えることができる。
.cstring str: .ascii "hoge" .text .globl _main _main: movl $str, %ebx pushl 4(%ebx) pushl 3(%ebx) pushl 2(%ebx) pushl 1(%ebx) pushl 0(%ebx)
↑イメージ的にはこんな感じ
うーん
うまく説明できない><