タグ付けされた質問 「void-pointers」

13
Cはそれほど難しくありません:void(*(* f [])())()
今日は写真を見ただけで説明をいただければと思います。だからここに写真があります: 私はこれを混乱させ、そのようなコードがこれまでに実用的であるかどうか疑問に思いました。私は写真をグーグルで検索して、この redditエントリに別の写真を見つけました。ここにその写真があります。 それで、この「螺旋状に読む」は有効なものですか?これはCコンパイラの解析方法ですか? この奇妙なコードについて、より簡単な説明があればすばらしいでしょう。 すべてのほかに、これらの種類のコードは役に立ちますか?もしそうなら、いつ、どこで? 「スパイラルルール」についての質問がありますが、私はそれがどのように適用されるのか、またはそのルールで式がどのように読み取られるのかを尋ねているだけではありません。私はそのような表現の使用法とスパイラルルールの妥当性についても質問しています。これらについては、いくつかの良い答えがすでに投稿されています。

8
Cのvoidポインターのポインター演算
特定の型へのポインタを(言うときint、char、float、...)がインクリメントされ、その値はそのデータ型のサイズだけ増加されます。voidサイズのデータ​​を指すポインターxがインクリメントされた場合、xバイト先をどのように指すのですか?コンパイラーxは、ポインターの値に追加することをどのようにして知っていますか?


15
Cプログラミングにおけるvoidポインターの概念
Cプログラミング言語で型キャストせずにvoidポインターを逆参照することは可能ですか? また、ポインタを受け取り、それをvoidポインタに格納できる関数を一般化する方法はありますか?そのvoidポインタを使用して、一般化された関数を作成できますか? たとえば: void abc(void *a, int b) { if(b==1) printf("%d",*(int*)a); // If integer pointer is received else if(b==2) printf("%c",*(char*)a); // If character pointer is received else if(b==3) printf("%f",*(float*)a); // If float pointer is received } if-elseステートメントを使用せずにこの関数をジェネリックにしたいのですが、これは可能ですか? また、voidポインターの概念を説明する優れたインターネット記事がある場合は、URLを提供できれば有益です。 また、voidポインターを使用したポインター演算は可能ですか?
129 c  void-pointers 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.