アスタリスクは常に「ねえ、それはポインタです!」という意味ですか? そして、ポインタは常にメモリアドレスを保持していますか?Objective-Cのアスタリスク*は何を意味していますか?
NSString* myString;
または
SomeClass* thatClass;
または
(*somePointerToAStruct).myStructComponent = 5;
:
は、例えば
(はい、私は*が数学の操作に使用されていることを例外に知っています)私はもっと私がいると感じるクラスへのポインタである変数を定義するときに使用するよりも、Asterirsk(*)について知る必要があります。
パラメータの宣言でパラメータ変数がポインタであると言うことがありますが、依然として値にアクセスするために変数の前にアスタリスクを使用する必要があるためです。最近私は、[myObj myMethod:& myStruct]のような方法で構造体のポインタをメソッドに渡したかったのですが、メソッド宣言ですでにパラメータがあると言っていましたが、その構造体からコンポーネントの値にアクセスできませんでした(DemoStruct *)myVarは実際にそのdemostructへのポインタとして既に知られているはずですが、私はいつも言っていました: "男、コンパイラ、Listen:ItISISSのポインタ:"と書く:(* myVar).myStructComponentX = 5;
本当に本当に本当に私はなぜそれを2回言わなければならないのか分かりません。そして、この場合のみ。
NSString * myStringのコンテキストでアスタリスクを使用すると、私はmyStringにアクセスすることができますが、ポインタを指定するたびにコンパイラに指示することなく、好きです。つまり、* myString = @ "yep"を使用するようなものです。
それはちょうど私には意味がありません。
それが固有ではありませんので、これは実際にはCの質問ですObjective-C :) –
複製のhttp://stackoverflow.com/questions/581657/why-do-i-have-to-write-mypointervar-only-sometimes-in-objective-c – philant
Objective- Cは、文字列オブジェクトの表記@ "..."です。 Cocoaでは、このような文字列オブジェクトのクラスはNSStringです。 – mouviciel