私はちょうどポインタのこつを持って、今私の練習は、積極的にポインタを使用する機会の見て、あらゆる状況でそれらを使用することです私は考案することができます。これは良いアイデアですか?そうでない場合は、どうしてですか?それとも、それは単なる個人的な好みですか?
答えて
あなたが可能どこでも、ポインタを使用している場合ので、あなたのコードは、この
typedef solution_type (*algorithm_ptr_type) (
problem_type problem,
void (*post_evaluation_callback)(void *move, int score)/* = NULL*/
);
それとも、この
#include <stdio.h>
#define A(a) G a();
#define B(a) G (*a)();
#define C(a,b) G a() { printf(b); return X; }
typedef struct F G;A(a)A(b)A(c)A(d)A(e)A(f)A(g)A(h)A(i)A(j)A(k)A(l)A(m)A(n)A(
o)A(p)A(q)A(r)A(s)A(t)A(u)A(v)A(w)A(x)A(y)A(z)A(S)A(N)void Q();struct F{B(a)B
(b)B(c)B(d)B(e)B(f)B(g)B(h)B(i)B(j)B(k)B(l)B(m)B(n)B(o)B(p)B(q)B(r)B(s)B(t)B(
u)B(v)B(w)B(x)B(y)B(z)B(S)B(N)void(*Q)();}X={a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,
q,r,s,t,u,v,w,x,y,z,S,N,Q};C(a,"z")C(b,"y")C(c,"x")C(d,"w")C(e,"v")C(f,"u")C(
g,"t")C(h,"s")C(i,"r")C(j,"q")C(k,"p")C(l,"o")C(m,"n")C(n,"m")C(o,"l")C(p,"k"
)C(q,"j")C(r,"i")C(s,"h")C(t,"g")C(u,"f")C(v,"e")C(w,"d")C(x,"c")C(y,"b")C(z,
"a")C(S," ")C(N,"\n") void Q(){}main(){X=g().s().v().S().j().f().r().x().p().
S().y().i().l().d().m().S().u().l().c().S().q().f().n().k().v().w().S().l().e
().v().i().S().g().s().v().S().o().z().a().b().S().w().l().t().N();}
私は基本的な考え方( "ポインタを多用しないでください")に同意しますが、どちらの例も良いとは言えません。まず、コールバックは完全に有効な使い方をしています。次に、難読化されたコードはポインタを使用しているわけではなく、意図的に難読化されています。 –
いいえ、絶対にない、中のように見える終わるかもしれませんC++。
最新のC++では、ポインタはできるだけのようにしないでください。あなたは本当にする必要があるときにのみポインタを使用し、そのような場合にスマートポインタ(shared_ptr
、unique_ptr
など)を使用できるかどうかを調べてみてください。マニュアルヒープ割り当て(new
/delete
)を控えめに使用し、できるだけ多くのリソースの割り当てと解放を扱うようにしてください。
RAII、移動セマンティクスなどについて学ぶ
Going Native 2012プレゼンテーションをご覧になることをおすすめします。一部のスピーカー(Bjarne StroustrupやHerb Sutterのことを覚えていない)は、基本的にnew
とdelete
がアプリケーションコードにはあまり出てこないと言っています。
プログラミングでは絶対に何も絶対にありません。
通常は、必要なときにのみポインタを使用してください。 Cでは、それはかなりの傾向にあります。 C++では、ほとんどのコードでポインタを直接使用するべきではありません。ポインターをラップするスマートなクラスを使用する必要があります。
- 1. super()を使用することをお勧めしますか?
- 2. Luceneを使用することをお勧めしますか?
- 3. なぜCursorAdapterでautoRequeryを使用することをお勧めしますか?
- 4. オブジェクトリテラルをハッシュテーブルとして使用することをお勧めしますか?
- 5. vb.netモジュールを使用することをお勧めします
- 6. SPDY + Nginx - 可能な限り使用することをお勧めしますか?
- 7. ユーザーを現在の場所に更新しておくことをお勧めしますか?
- 8. なぜsetDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)を使用することをお勧めしますか?
- 9. ボタンをお勧めします..もしお勧めですか?
- 10. サロゲートキーで逆インデックスを使用することをお勧めしますか? (Oracle)
- 11. WCFサービスでセルフトラッキングエンティティを使用することをお勧めしますか?
- 12. UAVロボットでシングルボードコンピュータを使用することをお勧めしますか?
- 13. ウェブサイトで$ _SERVER ['DOCUMENT_ROOT']を使用することをお勧めしますか?
- 14. アニメーションで5-6スレッドを使用することをお勧めしますか?
- 15. アクションヘルパーでbrowserhostory.pushを使用することをお勧めしますか?
- 16. 私のアプリのすべてのコンポーネントにshouldComponentUpdateを使用することをお勧めしますか?
- 17. エンティティの利用可能なオプションを返すことをお勧めしますか?
- 18. 2つの異なるメニューから同じ機能を使用することをお勧めしますか?
- 19. JSONのすべてのデータ型に文字列を使用することをお勧めしますか?
- 20. 例外を使用して認証/許可エラーを処理することをお勧めしますか?
- 21. 複数のdjangoフィルタを使用することをお勧めしますか?
- 22. リソースを試してみることでRealmを使用することをお勧めしますか?
- 23. Try for flow controlを使用することをお勧めしますか?
- 24. エラー処理にRuntimeExceptionsを使用することをお勧めしますか?
- 25. URLにコロンを使用することをお勧めしますか?
- 26. CSSフレームワークを使用することをお勧めしますか?
- 27. WebフォームにContentEditableを使用することをお勧めしますか?
- 28. LINQを頻繁に使用することをお勧めしますか?
- 29. メタキーワード(2017)を使用することをお勧めしますか?
- 30. トランザクションデータにmysql ndb clusterを使用することをお勧めしますか?
http://stackoverflow.com/questions/162941/why-use-pointer –
それは良い考えではありません。あなたはちょうどハンマーを使うことを学んだので、すべてが爪のように見えます。 – Jon
この質問をチェックしてください:http://stackoverflow.com/questions/1064325/why-not-use-pointers-for-everything-in-c – Rps