回答編集履歴
4
誤字修正
answer
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
|
12
12
|
余談
|
13
13
|
とあるCの一部のバージョンで、初期化文字列に文字数制限があったことがあります。
|
14
|
-
それを超える文字列を使いたいとき、このコンパイラの
|
14
|
+
それを超える文字列を使いたいとき、このコンパイラのchar配列のメモリ配置が連続することを利用して、以下のようなコードを使っていました。
|
15
15
|
```C
|
16
16
|
int hoge() {
|
17
17
|
static char message[20] = "限界までの文字列です";
|
3
誤字修正
answer
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
|
12
12
|
余談
|
13
13
|
とあるCの一部のバージョンで、初期化文字列に文字数制限があったことがあります。
|
14
|
-
それを超える文字列を使いたいとき、このコンパイラの固定文字
|
14
|
+
それを超える文字列を使いたいとき、このコンパイラの固定文字列のメモリ配置が連続することを利用して、以下のようなコードを使っていました。
|
15
15
|
```C
|
16
16
|
int hoge() {
|
17
17
|
static char message[20] = "限界までの文字列です";
|
2
変更
answer
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
コンパイラが、スタック変数に決定した順番で決めていたら、ご提示のような結果になるでしょう。
|
11
11
|
|
12
12
|
余談
|
13
|
-
|
13
|
+
とあるCの一部のバージョンで、初期化文字列に文字数制限があったことがあります。
|
14
14
|
それを超える文字列を使いたいとき、このコンパイラの固定文字れ鵜のメモリ配置が連続することを利用して、以下のようなコードを使っていました。
|
15
15
|
```C
|
16
16
|
int hoge() {
|
1
余談追加
answer
CHANGED
@@ -7,4 +7,16 @@
|
|
7
7
|
printf("変数iのアドレス %p\n", &i); /* スタック変数に決定 */
|
8
8
|
printf("変数cのアドレス %p\n", &c); /* スタック変数に決定 */
|
9
9
|
```
|
10
|
-
コンパイラが、スタック変数に決定した順番で決めていたら、ご提示のような結果になるでしょう。
|
10
|
+
コンパイラが、スタック変数に決定した順番で決めていたら、ご提示のような結果になるでしょう。
|
11
|
+
|
12
|
+
余談
|
13
|
+
Lattice Cの一部のバージョンで、初期化文字列に文字数制限があったことがあります。
|
14
|
+
それを超える文字列を使いたいとき、このコンパイラの固定文字れ鵜のメモリ配置が連続することを利用して、以下のようなコードを使っていました。
|
15
|
+
```C
|
16
|
+
int hoge() {
|
17
|
+
static char message[20] = "限界までの文字列です";
|
18
|
+
static char dummy[] = "追加文字列。";
|
19
|
+
message[20] = 0x20;
|
20
|
+
}
|
21
|
+
|
22
|
+
```
|