![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?c9bd177)
No.1ベストアンサー
- 回答日時:
利点は、おっしゃっていることそのまんまです。
たとえば、「どんな型の変数を代入する必要があるか全く分からない」という状況があったとします。
もしかしたら struct tm* かもしれないし、もしかしたら int* かもしれない。あるいは char* かもしれない。
これらのどれもが代入する必要がある可能性がある場合、先を見越して型を決めておくことができません(union で対処できる場合はいいですが)。
そこで、void* 型を「何でもいいよ」という意味で宣言しておくんです。
memcpy 関数の第1引数は void* で宣言されていますが、これは、どんなメモリーをどんな形でコピーする必要があるか、まったく分からないからです。
回答ありがとう御座いました。
そうですね、memcpyなどは普段何も考えずに使って
いたので気付きませんでした。
初心者なのでまた質問するかもしれませんが
その時はまたお願いします。
No.3
- 回答日時:
> int *buf;
>
> buf = ( int * )malloc( sizeof( char ) * 10 );
訂正。
int *buf;
buf = ( int * )malloc( sizeof( int ) * 10 );
でした。すいません。
いいえ、とんでもないです、回答ありがとう御座いました。
私自身、Cを始めたばっかりなのでmallocに
キャスト演算子を付けてすらいませんでした
ので勉強にもなりました。
No.2
- 回答日時:
具体例をあげれば動的にメモリ確保する malloc や realloc など、型の違うポインタを返す関数の戻り値や、型の違うポインタを引数に取る関数など。
また、関数へのポインタなど。どんな型がそこに来るのかわからないという場合いくらでも利点はあります。
ちなみに malloc なら、戻り値が void* で、
char *buf;
buf = ( char * )malloc( sizeof( char ) * 10 );
で char 型のサイズが10個ある配列の先頭要素へのポインタが取得できます。つまり char 配列を確保しています。
ここで、
int *buf;
buf = ( int * )malloc( sizeof( char ) * 10 );
とすると今度は int 型の配列が確保できたりします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 ポインタ 配列 2 2022/06/02 17:29
- C言語・C++・C# C言語: ポインタ 5 2022/06/01 08:33
- C言語・C++・C# ポインタの型変換、どうやるんでしたっけ? 2 2022/03/28 11:00
- C言語・C++・C# C pointer? or... 2 2022/03/29 00:47
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- デスクトップパソコン 全画面表示でもタスクバーを前面に隠す、表示させるようにしたい 3 2022/03/23 12:30
- C言語・C++・C# C言語 配列とポインタについて 2 2022/06/02 11:53
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- C言語・C++・C# 関数ポインタの高速化のメリット 7 2023/05/05 20:15
- その他(ブラウザ) Microsoft edgeのスクロールバーについて 2 2022/09/19 16:56
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
戻り値で構造体を返すことは可...
-
セグメントエラー
-
プーさんのマウスポインタを教...
-
LPSTR型の初期化について
-
Run-Time Check Failure #3とい...
-
[excel vba] マウスポインタの...
-
std::cout << p と std::cout <...
-
基本アルゴリズムの『返す』の...
-
Vector定義の配列の共有メモリ化
-
#define NULL ((void *)0) の弊害
-
init関数の意味
-
^と*の違いについて
-
cv::Mat から vectorにコピー
-
ポインタのミスでOS壊れるの...
-
ListViewのソートについて
-
関数から配列を返すには?
-
C言語 配列の長さの上限
-
System.IO.Directory.GetFiles...
-
DataGridView の sort
-
ファイル名「1.jpg ~10.jpg~...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セグメントエラー
-
init関数の意味
-
C言語のポインタに直接アドレス...
-
fopne で失敗する原因
-
Run-Time Check Failure #3とい...
-
C言語の関数と配列に関する質問
-
LPSTR型の初期化について
-
戻り値で構造体を返すことは可...
-
参照型で受け取った引数をポイ...
-
構造体とfscanf
-
ExcelVBAでのkernel32(64bit)
-
アプリを32bitから64bit移行
-
Cで作成したDLL関数をVBから呼...
-
C言語でのconstを返す関数
-
main(int argc,char **argv[])...
-
DLL<->VB間での受け渡し(文字...
-
エラーの意味
-
PASCALとFARの意味
-
ハンドルはポインタか
-
CWnd::EnableWindow()の扱い方
おすすめ情報