Zig Academy · レッスン

ptr.*でデリファレンスする

ポインターを通して値を読み書きします。

レッスン 2/413 ステップ

「ptr.*でデリファレンスする」はCoddyKit上の無料Zig Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはZig Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Zig Academyコースには全4レッスンが含まれています。

値へのアクセス

ポインタが保持するのは値ではなくアドレスです。その先にある値を使うには、まずポインタをデリファレンスする必要があります。

.* 構文

Zig では、ポインタの末尾に .* を付けてデリファレンスします。つまり ptr.* は、ptr が現在指している値を意味します。

var x: i32 = 7;
const p = &x;
const v = p.*;

ポインタを通して読み取る

式の中に ptr.* と記述すると、指し先の値を読み取り

const doubled = p.* * 2;

ポインタを通して書き込む

代入の左辺に ptr.* を置くと、元の場所に新しい値を書き込みます。

p.* = 99;

変更は反映される

ポインタは元の記憶領域を共有するため、ポインタを通して書き込むと、他の場所から見える変数も更新されます。

var x: i32 = 1;
const p = &x;
p.* = 5;
// x is now 5

矢印演算子はない

Zig には C のような -> はありません。フィールドを読み取る場合も書き込む場合も、常に同じ .* デリファレンスを通します。

デリファレンスしてからフィールドへ

struct へのポインタでは p.field を直接使えます。フィールドアクセス時に Zig が自動的にデリファレンスするため、.* を省略できます。

const p = &point;
const y = p.y;

明示的な記述も可能

p.*.field と明示的に記述することもできますが、短い p.field のほうが Zig らしい書き方で、読みやすくなります。

Const は書き込みを禁止する

ポインタが *const T の場合、ptr.* は読み取り専用です。そこを通して代入しようとするとコンパイルエラーになります。

const x: i32 = 3;
const p = &x;
// p.* = 4; // error

計算でのデリファレンス

ptr.* は値を置ける場所ならどこでも使えます。算術演算も可能なので、p.* + 1 は指し先の値に1を加えることを意味します。

const next = p.* + 1;

よくある間違い

.* を忘れると、アドレスを数値として使おうとするため、型エラーになります。Zig は実行時ではなくコンパイル時に検出します。

クイックチェック

const p = &x があり、p を通して x に新しい数値を格納したいとします。何と記述しますか?

まとめ

ptr.* を使ってポインタが指す値を読み書きします。struct のフィールドアクセスは自動的にデリファレンスされ、*const T ポインタは読み取り専用のままです。🎯

無料で開始

AI チューターと学ぶ Zig — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「ptr.*でデリファレンスする」レッスンは無料ですか?

はい。「ptr.*でデリファレンスする」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Zig Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Zig Academyコースには全4レッスンが含まれています。

「ptr.*でデリファレンスする」で何を学びますか?

ポインターを通して値を読み書きします。 ブラウザで直接実行するハンズオンコードでZig Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Zig Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのZig Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「ptr.*でデリファレンスする」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このZig Academyレッスンでコードを書いて実行できますか?

はい。すべてのZig Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. *Tによる単一要素ポインター
  2. ptr.*でデリファレンスする
  3. [*]Tによる複数要素ポインター
  4. constポインターとアラインメント
← Zig Academyに戻る