- 1 : 2024/02/24(土) 23:05:32.790 ID:7Jt4Z+cp0
- すげーだろ
- 2 : 2024/02/24(土) 23:07:31.171 ID:7Jt4Z+cp0
- これをかけたらもう完全に理解してるやろ
int *p;
int a = 11;
p = &a;
*p = 22;
return a; - 3 : 2024/02/24(土) 23:09:27.689 ID:X0O8zIM10
- まずは第一歩だね!
- 4 : 2024/02/24(土) 23:11:18.833 ID:YG4GgL8+0
- 凄いけど今使うの?
ポインタってパソコンが貧弱だった頃のロストテクノロジーでしょ
今のつよつよPCで出番あるの? - 5 : 2024/02/24(土) 23:12:06.539 ID:7Jt4Z+cp0
- >>4
それは流石に…
参照渡しぐらいあるじゃん - 11 : 2024/02/24(土) 23:16:18.995 ID:/n3UEBCf0
- >>4
ぬるぽ - 6 : 2024/02/24(土) 23:12:51.358 ID:c3cp4zRi0
- あとはポインターの足し算引き算
ポインターと多次元配列の関係が理解出来てればOK - 10 : 2024/02/24(土) 23:15:45.231 ID:7Jt4Z+cp0
- >>6
多次元配列はわからんなぁ
ポインタの配列作るの? - 7 : 2024/02/24(土) 23:13:12.360 ID:JVK2ILXB0
- ポインタはmallocとかと組み合わせてからが本領
- 12 : 2024/02/24(土) 23:17:17.653 ID:7Jt4Z+cp0
- >>7
何もみずに書いてみたけど合ってる?int *a = malloc(20);
*a = "Hello";
printf("%s", *a); - 14 : 2024/02/24(土) 23:18:43.076 ID:/n3UEBCf0
- >>12
あってないです - 17 : 2024/02/24(土) 23:20:07.294 ID:7Jt4Z+cp0
- >>14
まじか!どうすんだ - 16 : 2024/02/24(土) 23:20:06.790 ID:c3cp4zRi0
- >>12
合ってない
まずmallocの戻り値はvoid*だから、変数へ代入する前にキャストしなきゃ
それからせっかくmallocしたのが次の代入でムダになってる
これ典型的なメモリーリークだから - 18 : 2024/02/24(土) 23:22:13.414 ID:7Jt4Z+cp0
- >>16
どうしたらいいの?こんな感じ?void *a = molloc(20);
a[0] = 'H'
a[1] = 'e'
a[2] = 'l'
a[3] = 'l'
a[4] = 'o'
a[5] = '\0' - 8 : 2024/02/24(土) 23:14:15.842 ID:FthCPwL60
- 線形リストが大好物♥
- 13 : 2024/02/24(土) 23:18:20.741 ID:7Jt4Z+cp0
- >>8
cってそのへんのデータ構造自分で実装することになるから勉強になるよな
他の言語だと勉強にならん - 9 : 2024/02/24(土) 23:14:58.491 ID:YG4GgL8+0
- シューティングゲームとかでリストでしか使った事無いから分からないな
今だと強引に配列とforで回してもそんなに処理落ちしないでしょ - 15 : 2024/02/24(土) 23:19:54.379 ID:7Jt4Z+cp0
- >>9
うーん。
シューティングゲームで敵のオブジェクトの配列を処理するときに、ポインタ渡すとかある気がする
最近の言語でも大体これと同等のことやる気がする
毎フレームオブジェクトを複製してたら詰まない? - 19 : 2024/02/24(土) 23:23:16.139 ID:xC1my7e70
- WINAPIとかによくある返り値とは別になんか出力する用のポインタ渡すやつ
- 20 : 2024/02/24(土) 23:24:15.469 ID:7Jt4Z+cp0
- そうかぁ
これだと"Hello"がデータ領域にあるからヒープ領域指し示してないのか
たしかにメモリリークしてるわ
やべー
全然Cわかってねぇint *a = malloc(20);
*a = "Hello";
printf("%s", *a); - 21 : 2024/02/24(土) 23:25:04.107 ID:7Jt4Z+cp0
- mollocで獲得したヒープ領域にデータ書き込むのってどうしたら良いんだ、
なんか完成あるのか??
strcpyとかあったっけ? - 22 : 2024/02/24(土) 23:26:45.471 ID:7Jt4Z+cp0
- これでどうや!
おじいちゃん!添削たのむchar *a = molloc(20);
strcpyn(*a, "Hello", 6);
print("%s", *a); - 27 : 2024/02/24(土) 23:31:00.305 ID:c3cp4zRi0
- >>22
strncpyがstrcpynになってるのはご愛嬌として
第3引数の"6"が間違ってたらたちまちセキュリティーホールと化す
ASCII文字列の場合は数えれば5文字+NUL文字だと分かるが、国際化文字列だとどうしようもない
文字列処理はC言語の鬼門だから、もっと慣れてからでもいいと思う - 25 : 2024/02/24(土) 23:29:30.764 ID:/n3UEBCf0
- C言語はウホホウホホと言いながら石器でなんでも作れるような原始人のおっさんに任せて
新人はモダンな言語を扱うべき - 26 : 2024/02/24(土) 23:30:50.959 ID:7Jt4Z+cp0
- >>25
俺も原始人になりたい
石器で全てを作りたいんだよ - 28 : 2024/02/24(土) 23:32:09.564 ID:c3cp4zRi0
- >>26
Linuxカーネル開発に飛び入りできるような天才でなければ
C言語には泥みたいな仕事しか残ってないよ - 29 : 2024/02/24(土) 23:32:48.876 ID:QztjJdG60
- 書く仕事はなくても読む仕事がある
- 30 : 2024/02/24(土) 23:33:34.882 ID:BvYw728L0
- 俺はポインタは理解しても1週間で忘れる
- 31 : 2024/02/24(土) 23:34:03.678 ID:BvYw728L0
- そもそもPythonで良いし
- 32 : 2024/02/24(土) 23:34:56.501 ID:t3/BaEAc0
- 昨年に理解したけどもうさっぱりだわ
コメント