エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります
コードを貼れる所
http://codepad.org/
https://ideone.com/
前スレ
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1530384293/
探検
【初心者歓迎】C/C++室 Ver.104【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
2018/12/28(金) 06:04:52.38ID:ufThBpcD
392デフォルトの名無しさん
2019/02/05(火) 07:12:26.12ID:kZRbw8C2 whileは単なる無限ループじゃなく、スレッドが立ち上がるまで、sleep で CPU を眠らせてるんじゃないの?
whileだけだと、負荷かかるし、sleep一発だと、繰り返し待ちできないから
whileだけだと、負荷かかるし、sleep一発だと、繰り返し待ちできないから
393デフォルトの名無しさん
2019/02/05(火) 07:23:19.83ID:kZRbw8C2 https://ja.cppreference.com/w/cpp/compiler_support
gccは並列STLまだ実装できてないんだな。がかーり
C++2xは後回しでいいから先に実装してもらいたいな
msvcがしらん間にgccを上回るC++17準拠状況になってるんだな
msがかなり頑張ってるのがかなり意外
gccは並列STLまだ実装できてないんだな。がかーり
C++2xは後回しでいいから先に実装してもらいたいな
msvcがしらん間にgccを上回るC++17準拠状況になってるんだな
msがかなり頑張ってるのがかなり意外
394デフォルトの名無しさん
2019/02/05(火) 10:24:17.44ID:Jquzc2Ph 趣味グラマーって本職が焼そば職人だっけ
395デフォルトの名無しさん
2019/02/05(火) 10:36:43.43ID:PCiHKxWL MSが標準をわざと外して潰し合う戦略を取ってたのは遥か昔
今は協調してシェアを取り込んでから独占する戦略がメイン
今は協調してシェアを取り込んでから独占する戦略がメイン
396デフォルトの名無しさん
2019/02/05(火) 13:32:56.11ID:HSCecGQW >>394
ブロガーで良くね?
ブロガーで良くね?
397デフォルトの名無しさん
2019/02/05(火) 18:47:37.04ID:VoURnPvV スパゲッティーでは?
398デフォルトの名無しさん
2019/02/05(火) 21:03:29.46ID:6rjCuhxB >>396
つ ttps://cpplover.blogspot.com/2016/05/2016.html
つ ttps://cpplover.blogspot.com/2016/05/2016.html
399デフォルトの名無しさん
2019/02/06(水) 08:14:04.23ID:QvJUH+Yd >>394
Oishii Sru Paの話?
Oishii Sru Paの話?
400デフォルトの名無しさん
2019/02/09(土) 10:04:34.12ID:Js3eMSlM 6
だまれ朝鮮人
失せろ
だまれ朝鮮人
失せろ
401デフォルトの名無しさん
2019/02/09(土) 13:43:15.52ID:n731AUSx Class TA{
public:
TB B;
}
Class TB{
・・・
}
Class TA::TA(){ //コンストラクタ
B = new TB;
}
で、TAのデストラクタが走った時点でBも一緒に消えるんですかね。
それともTAのデストラクタで delete B が必要なんですかね。
public:
TB B;
}
Class TB{
・・・
}
Class TA::TA(){ //コンストラクタ
B = new TB;
}
で、TAのデストラクタが走った時点でBも一緒に消えるんですかね。
それともTAのデストラクタで delete B が必要なんですかね。
403デフォルトの名無しさん
2019/02/09(土) 14:24:00.17ID:6TG0Gkwe 必ずというわけではないよ
>>403
理解はしますが薦める気にはならないのです…
理解はしますが薦める気にはならないのです…
405デフォルトの名無しさん
2019/02/09(土) 15:47:27.40ID:YAWSonmT >B = new TB;
エラーになるんじゃね?
エラーになるんじゃね?
406デフォルトの名無しさん
2019/02/09(土) 16:20:31.91ID:NnmcfWng >>405
それぐらいは忖度してやれよ
それぐらいは忖度してやれよ
407デフォルトの名無しさん
2019/02/10(日) 13:20:38.44ID:MWi64iyD メンバ変数にクラスを持つときはポインタ型にしてコピーコンストラクタを作るべきですか?
それともクラスの実体を持たせても大差ありませんか?
それともクラスの実体を持たせても大差ありませんか?
408デフォルトの名無しさん
2019/02/10(日) 13:21:20.82ID:XMMc9iis クラスと用途による
409デフォルトの名無しさん
2019/02/10(日) 13:40:02.39ID:Ix0Ul5tp 実体で用が足りるならすべて実体でよい
効率云々はまず一通り動くものが出来上がった上でそこが問題になってから考えろ
効率云々はまず一通り動くものが出来上がった上でそこが問題になってから考えろ
410デフォルトの名無しさん
2019/02/10(日) 13:41:09.49ID:MWi64iyD わかりました
ありがとうございます
ありがとうございます
411デフォルトの名無しさん
2019/02/10(日) 14:15:19.12ID:0+1G/wKU 値型とエンティティを意識して作って下さい
エンティティはスマポで管理、値型は実体を持たせるべきでしょう
エンティティはスマポで管理、値型は実体を持たせるべきでしょう
412デフォルトの名無しさん
2019/02/10(日) 14:26:23.71ID:KPch74RC エンティエィって何?
定性的な定義を頼むわ
定性的な定義を頼むわ
413デフォルトの名無しさん
2019/02/10(日) 14:30:03.09ID:0+1G/wKU >>412
インスタンスがアイデンティティを持つならエンティティ
インスタンスがアイデンティティを持つならエンティティ
415デフォルトの名無しさん
2019/02/10(日) 15:16:29.18ID:sKzQuR0e あーやだやだ
こういう宗教じみた設計論語るやつ
こういう宗教じみた設計論語るやつ
416デフォルトの名無しさん
2019/02/10(日) 15:16:40.47ID:0+1G/wKU >>414
値です
値です
417デフォルトの名無しさん
2019/02/10(日) 15:17:40.51ID:0+1G/wKU >>415
現実を見据えて追求すると自然と出てくる答えです
現実を見据えて追求すると自然と出てくる答えです
418デフォルトの名無しさん
2019/02/10(日) 16:25:18.62ID:scT3207q 親クラスとライフサイクルが同じか数値型なら実体、そうでないならポインタでいいだろ。
動的確保よりコピーやmoveのほうがコストが低い場合とか検討の余地はあるけど、考えすぎると禿げる。
動的確保よりコピーやmoveのほうがコストが低い場合とか検討の余地はあるけど、考えすぎると禿げる。
419デフォルトの名無しさん
2019/02/10(日) 16:31:34.44ID:25jgEgQt >>401
デストラクタは virtual に汁
デストラクタは virtual に汁
420デフォルトの名無しさん
2019/02/10(日) 20:26:50.17ID:EWmLbbO6 どうせそこまで最適化も厳密なメモリ管理も必要なプログラムじゃないだろ。
421デフォルトの名無しさん
2019/02/10(日) 21:57:11.00ID:sKzQuR0e >>417
ほらね、こういう精神論がでてくる
ほらね、こういう精神論がでてくる
422デフォルトの名無しさん
2019/02/11(月) 01:02:52.04ID:QKPibkAC 組み込み以外に使い道あるんですか?
423デフォルトの名無しさん
2019/02/11(月) 07:24:34.72ID:KN5ZTrY9 OS作ったり、ブラウザ作ったり、3Dバリバリのゲームを作ったり、他の言語向けに機械学習や科技計算等のライブラリを作ったり、いろいろあるよ
424デフォルトの名無しさん
2019/02/11(月) 12:01:51.83ID:itY+kGJR RubyはC++が嫌いだからCで書かれている
425デフォルトの名無しさん
2019/02/11(月) 12:06:46.94ID:QKPibkAC426デフォルトの名無しさん
2019/02/11(月) 12:32:11.46ID:PRVQuzHN 古い例だとニコニコ動画がC++
まあおかげで開発がスケールせずオワコン化したわけだが
まあおかげで開発がスケールせずオワコン化したわけだが
427デフォルトの名無しさん
2019/02/11(月) 12:32:14.48ID:itY+kGJR the door is open
428デフォルトの名無しさん
2019/02/11(月) 12:43:40.65ID:MmPS3pUZ >>425
聞いてばっかりじゃなくてお前がどういうものを探しているか書いたら?
聞いてばっかりじゃなくてお前がどういうものを探しているか書いたら?
429デフォルトの名無しさん
2019/02/11(月) 13:10:19.37ID:Y0EVtjJ+ CADとか画像処理とかビット演算系アルゴリズム(cf.ZDD)なんかは
まだまだ他の言語には負けないね
まだまだ他の言語には負けないね
431デフォルトの名無しさん
2019/02/11(月) 13:51:23.27ID:awXFg/MG JavaからC++勉強中です
C++の場合、他のクラスのオブジェクトを複数持たせるときは、一般的にどうするんでしょうか
・コンテナにオブジェクトそのものを突っ込む(一番わかりやすいけど、ムーブの定義忘れとかでミスが出そう)
・コンテナにオブジェクトへのポインタを持たせる(コンテナ解放時に、クラスごとに同じようなメモリ解放処理書くのかしら)
・コンテナにポインタをスマートポインタで持たせる
辺りをネットで読ませてもらいましたが、こんな感じで良いんでしょうか?
不勉強な上、他のオブジェクト持つという基本的なことなので、なんかもっと簡単な方法を見落としてる気がしてしまいまして
C++の場合、他のクラスのオブジェクトを複数持たせるときは、一般的にどうするんでしょうか
・コンテナにオブジェクトそのものを突っ込む(一番わかりやすいけど、ムーブの定義忘れとかでミスが出そう)
・コンテナにオブジェクトへのポインタを持たせる(コンテナ解放時に、クラスごとに同じようなメモリ解放処理書くのかしら)
・コンテナにポインタをスマートポインタで持たせる
辺りをネットで読ませてもらいましたが、こんな感じで良いんでしょうか?
不勉強な上、他のオブジェクト持つという基本的なことなので、なんかもっと簡単な方法を見落としてる気がしてしまいまして
432デフォルトの名無しさん
2019/02/11(月) 13:54:24.78ID:QKPibkAC >>431
時と場合によりますので一般的な答えはありません
時と場合によりますので一般的な答えはありません
433さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/11(月) 14:06:14.14ID:fD0IDjkv >>431
Javaのオブジェクト参照はC++のポインタに該当する。
C++のオブジェクトは、型を持ったバイト列だと考えていい。
C++で自動変数を宣言すると、スタックにバイト列が割り当てられる。
newやスマポやコンテナを使うと、ポインタによりヒープでメモリーが割り当てられる。
ポインタも型を持ったバイト列。ポインタは配列のように周りのメモリーにアクセスできる。
C++のクラスは構造体に関数群を追加したもの。C++でクラスを継承すると、関数群とバイト列を引き継いだサブクラスになる。
Javaのオブジェクト参照はC++のポインタに該当する。
C++のオブジェクトは、型を持ったバイト列だと考えていい。
C++で自動変数を宣言すると、スタックにバイト列が割り当てられる。
newやスマポやコンテナを使うと、ポインタによりヒープでメモリーが割り当てられる。
ポインタも型を持ったバイト列。ポインタは配列のように周りのメモリーにアクセスできる。
C++のクラスは構造体に関数群を追加したもの。C++でクラスを継承すると、関数群とバイト列を引き継いだサブクラスになる。
434デフォルトの名無しさん
2019/02/11(月) 14:12:14.41ID:0TxoCFW6 >>431
大体、その3つの通りで、そこに述べられたものの上から優先的に選ぶ。
つまり、普通にメンバ変数にオブジェクトとして宣言するのがC++では
最も効率が良くて伝統的な書き方。それでは問題が生じる場合にオブジェクトの
ポインタとして持たせる。スマートポインタは後になって導入されたもので、
人気があるものではないので無視して良い。
二番目のポインタとして持たせるのは、例えば、今定義している最中の
クラス(自分自身)と同じ型のデータで、子どもや親にあたるデータへ
リンクを作りたいようなときか、または、ある基本クラスを継承した
色々なクラスのオブジェクトを持ちたい場合に用いる。
大体、その3つの通りで、そこに述べられたものの上から優先的に選ぶ。
つまり、普通にメンバ変数にオブジェクトとして宣言するのがC++では
最も効率が良くて伝統的な書き方。それでは問題が生じる場合にオブジェクトの
ポインタとして持たせる。スマートポインタは後になって導入されたもので、
人気があるものではないので無視して良い。
二番目のポインタとして持たせるのは、例えば、今定義している最中の
クラス(自分自身)と同じ型のデータで、子どもや親にあたるデータへ
リンクを作りたいようなときか、または、ある基本クラスを継承した
色々なクラスのオブジェクトを持ちたい場合に用いる。
435さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/11(月) 14:16:41.10ID:fD0IDjkv C/C++では、sizeofキーワードを使えば、簡単にvoid以外の型のサイズがコンパイル時に取得できる。Javaではオブジェクトのサイズを簡単に取得することはできない。
C/C++はよくオブジェクトのサイズやバイトの並びを意識してプログラミングする。
C/C++はよくオブジェクトのサイズやバイトの並びを意識してプログラミングする。
436デフォルトの名無しさん
2019/02/11(月) 14:17:25.55ID:a3vDiVrE 結局CのポインタってJavaとかの言語で表すなら何なんだ?
437さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/11(月) 14:23:20.42ID:fD0IDjkv なぜなら、例えばスタックに巨大なデータを割り当てると、スタックオーバーフローというエラーが発生するし、
ヒープだって、巨大なデータの割り当ては失敗することがある。
また、構造体を変更すると、構造体のサイズやデータ構造が変化して、互換性の問題が発生することがある。
ヒープだって、巨大なデータの割り当ては失敗することがある。
また、構造体を変更すると、構造体のサイズやデータ構造が変化して、互換性の問題が発生することがある。
438デフォルトの名無しさん
2019/02/11(月) 14:24:23.31ID:awXFg/MG >>434氏他
丁度今、ウェブ上のC++で書かれたCompositeパターンのソースを読ませて頂いてました
正に2番目で実装されてましたが、都度メモリ解放処理書くくらい当たり前なんですね、流石C++です
独学なもんで、こうはっきり言ってもらえると本当にありがたいです、使い分けて行きたいと思います
他の皆様もありがとうございました、勉強になりました
丁度今、ウェブ上のC++で書かれたCompositeパターンのソースを読ませて頂いてました
正に2番目で実装されてましたが、都度メモリ解放処理書くくらい当たり前なんですね、流石C++です
独学なもんで、こうはっきり言ってもらえると本当にありがたいです、使い分けて行きたいと思います
他の皆様もありがとうございました、勉強になりました
439さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/11(月) 14:34:10.39ID:fD0IDjkv >>436
Javaの動的配列はCのポインタに近いが、Javaの配列では危険なアクセスは制限されているし、参照カウントで管理されている点が異なる。
Javaのオブジェクト参照は、参照カウントで管理されており、C++の構造体/クラス型に対するstd::shared_ptrに該当する。
Javaの動的配列はCのポインタに近いが、Javaの配列では危険なアクセスは制限されているし、参照カウントで管理されている点が異なる。
Javaのオブジェクト参照は、参照カウントで管理されており、C++の構造体/クラス型に対するstd::shared_ptrに該当する。
440さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/11(月) 14:37:16.50ID:BEdrdhIs しかし、std::shared_ptrはヌルポを指定できるが、Javaはできない。
441デフォルトの名無しさん
2019/02/11(月) 14:49:43.57ID:0TxoCFW6 >>438
C++ は、デストラクタに必ずメモリ解放処理を書いておけば、そんなに
メモリーリークを気にすることはない。多くの場合にはそれで完全に処理できるから。
次のように書くだけで、ほとんどの場合、メモリーリークは起きない:
class CMyClass {
BYTE *m_pBuf;
CMyClass() { // コンストラクタ
m_pBuf = NULL; // メモリをまだ未割り当てであることをマークするためにこうしておく
}
~CMyClass() { // デストラクタ
if ( m_pBuf != NULL ) {
delete [] m_pBuf; // メモリの解放
}
}
}
C++ は、デストラクタに必ずメモリ解放処理を書いておけば、そんなに
メモリーリークを気にすることはない。多くの場合にはそれで完全に処理できるから。
次のように書くだけで、ほとんどの場合、メモリーリークは起きない:
class CMyClass {
BYTE *m_pBuf;
CMyClass() { // コンストラクタ
m_pBuf = NULL; // メモリをまだ未割り当てであることをマークするためにこうしておく
}
~CMyClass() { // デストラクタ
if ( m_pBuf != NULL ) {
delete [] m_pBuf; // メモリの解放
}
}
}
442デフォルトの名無しさん
2019/02/11(月) 14:52:47.12ID:dGdUrFsa すごく古い書き方だ
444デフォルトの名無しさん
2019/02/11(月) 14:55:46.62ID:DnOcmNTU 確かに、人に教えるレベルじゃないね
445デフォルトの名無しさん
2019/02/11(月) 14:56:36.09ID:0TxoCFW6 >>441
正しくは、次のようにアクセス制御のための「public :」を書かないといけない。
class CMyClass {
protected :
BYTE *m_pBuf; // 高速化のため、自動的には初期化はされないのでコンストラクタで初期化する。
public :
CMyClass() { // コンストラクタ
m_pBuf = NULL; // メモリをまだ未割り当てであることをマークするためにこうしておく
}
~CMyClass() { // デストラクタ
if ( m_pBuf != NULL ) {
delete [] m_pBuf; // メモリの解放
}
}
}
なお、必要に応じて、コンストラクタの中で、m_pBuf = new BYTE [xxx]; のように書いても良い。
それと、BYTE は、「オブジェクト」ではないので、あなたの書いているような場合には、
BYTE *m_pBuf の部分を CSomeObject m_pObj; のように変えて、m_pObj = new CSomeObject;
のようにする。
正しくは、次のようにアクセス制御のための「public :」を書かないといけない。
class CMyClass {
protected :
BYTE *m_pBuf; // 高速化のため、自動的には初期化はされないのでコンストラクタで初期化する。
public :
CMyClass() { // コンストラクタ
m_pBuf = NULL; // メモリをまだ未割り当てであることをマークするためにこうしておく
}
~CMyClass() { // デストラクタ
if ( m_pBuf != NULL ) {
delete [] m_pBuf; // メモリの解放
}
}
}
なお、必要に応じて、コンストラクタの中で、m_pBuf = new BYTE [xxx]; のように書いても良い。
それと、BYTE は、「オブジェクト」ではないので、あなたの書いているような場合には、
BYTE *m_pBuf の部分を CSomeObject m_pObj; のように変えて、m_pObj = new CSomeObject;
のようにする。
447デフォルトの名無しさん
2019/02/11(月) 15:03:05.98ID:MkFOBvt9 良い子のみんなは>>441の危険性が理解できるまではスマートポインタを使ってね
おじさんとのお約束だよ
おじさんとのお約束だよ
448デフォルトの名無しさん
2019/02/11(月) 15:11:57.93ID:Qk3j4qw0449さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/11(月) 15:18:49.80ID:BEdrdhIs450はちみつ餃子 ◆8X2XSCHEME
2019/02/11(月) 15:19:34.89ID:eS7AzULV451デフォルトの名無しさん
2019/02/11(月) 15:19:51.73ID:3tLemvMU 初心者なので確認
コンストラクタの中に飛び込む前のメンバの初期化で例外発生したら m_pBuf は中途半端になるから
コンストラクタの中で代入するんじゃなく、メンバ初期化子で初期化しろ
という認識でいいのかしら
コンストラクタの中に飛び込む前のメンバの初期化で例外発生したら m_pBuf は中途半端になるから
コンストラクタの中で代入するんじゃなく、メンバ初期化子で初期化しろ
という認識でいいのかしら
452さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/11(月) 15:29:14.84ID:BEdrdhIs >>451
「C++ 例外安全」でググれ。ナマポを使わずに、素直に生配列、コンテナ、スマポのどれかを使えば済むこと。マネージされてないナマポは村八分にしろ。
「C++ 例外安全」でググれ。ナマポを使わずに、素直に生配列、コンテナ、スマポのどれかを使えば済むこと。マネージされてないナマポは村八分にしろ。
453デフォルトの名無しさん
2019/02/11(月) 15:39:02.97ID:3tLemvMU なんとなくわかった ような気がする
生ポそのものはコンストラクタもデストラクタに何ら操作しないから宙ぶらりんこになるのか
生ポそのものはコンストラクタもデストラクタに何ら操作しないから宙ぶらりんこになるのか
454デフォルトの名無しさん
2019/02/11(月) 15:41:57.41ID:dGdUrFsa ちょっち理解は大変だけど生ポはスマポにドンドン置き換えたい
455さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/11(月) 15:43:11.94ID:BEdrdhIs スマポならコピーコンストラクター・代入のややこしさからも解放される。
456はちみつ餃子 ◆8X2XSCHEME
2019/02/11(月) 15:52:25.23ID:eS7AzULV まあまあ。
スマートポインタを活用しろというのはその通りだが、
ポインタ (や例外機構) を理解せずに
思考停止してスマートポインタを使うのはあかんやろ。
ここの元質問者はまだそこを理解しようとしている
ところなんだから、スマートポインタを使わなかった場合にどう書けば良いのか、
きちんと書くと面倒くさすぎるという体験も必要だろ。
スマートポインタを活用しろというのはその通りだが、
ポインタ (や例外機構) を理解せずに
思考停止してスマートポインタを使うのはあかんやろ。
ここの元質問者はまだそこを理解しようとしている
ところなんだから、スマートポインタを使わなかった場合にどう書けば良いのか、
きちんと書くと面倒くさすぎるという体験も必要だろ。
457さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/11(月) 16:16:38.24ID:fD0IDjkv 所有権の管理は人類には早すぎる。
所有権が変動するときは、スマポでOK.
所有権が変動するときは、スマポでOK.
458さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/11(月) 16:28:46.52ID:fD0IDjkv こんなときはナマポを使ってもよい:
処理の中で所有権が移動・消滅しない場合。
バイナリーデータやPODを生で扱う場合。
処理系がナマポやトークンやハンドルの入力を要求する場合。
処理の中で所有権が移動・消滅しない場合。
バイナリーデータやPODを生で扱う場合。
処理系がナマポやトークンやハンドルの入力を要求する場合。
459デフォルトの名無しさん
2019/02/11(月) 16:36:19.07ID:QKPibkAC 生ポはスマポのオーバーヘッドすら許容できないときに使うものです
だから初心者は無理して生ポを使わなくていいです
だから初心者は無理して生ポを使わなくていいです
460デフォルトの名無しさん
2019/02/11(月) 16:59:08.84ID:V2lM2C5l >>434
スマポは後になって導入されたもので人気がない、なんて意見は一般的ではないので無視して良い
スマポは後になって導入されたもので人気がない、なんて意見は一般的ではないので無視して良い
461デフォルトの名無しさん
2019/02/11(月) 18:19:37.85ID:j549IniP スマポをC#のusing感覚で使ってる
462デフォルトの名無しさん
2019/02/12(火) 13:19:56.52ID:VqanzRzk エアプwwwwwwwww今は参照カウントじゃねーよw残念だったなクソ蟻wwww
463デフォルトの名無しさん
2019/02/12(火) 13:20:43.00ID:VqanzRzk それで、Cの生ポってC/C++以外で表現するなら何なんだ?
464デフォルトの名無しさん
2019/02/12(火) 16:02:24.32ID:VerJGrBE >>463
native int
native int
465デフォルトの名無しさん
2019/02/12(火) 17:27:09.82ID:VqanzRzk >>464
仮装アドレス的な意味で来るとは思ってなかったwでも本質はそうだよなあ
仮装アドレス的な意味で来るとは思ってなかったwでも本質はそうだよなあ
466デフォルトの名無しさん
2019/02/12(火) 17:29:23.18ID:t+DTqVP+ CALL -151
467デフォルトの名無しさん
2019/02/13(水) 06:16:37.08ID:2WlGbphz >>463 今の言語は極力「生のポインタ」が見えないようにしてるからなぁ。
オレの乏しい知識で無理矢理ヒネリ出すなら、
「古いBASICの peek, poke のアドレス指定に変数を使った場合」かのう。
型のない単なるアドレスって言うか数値だけど。
オレの乏しい知識で無理矢理ヒネリ出すなら、
「古いBASICの peek, poke のアドレス指定に変数を使った場合」かのう。
型のない単なるアドレスって言うか数値だけど。
468デフォルトの名無しさん
2019/02/13(水) 15:13:52.62ID:Yg4iFXpY upvar
469デフォルトの名無しさん
2019/02/13(水) 15:46:18.41ID:SgfrIpbp >>463
BYTE ptr = アドレス値;
BYTE MEM[4096 * 1024]; // 4GB のメモリ配列
*ptr ---> MEM[ptr] // ptr は MEM[] 配列の添え字
BYTE ptr = アドレス値;
BYTE MEM[4096 * 1024]; // 4GB のメモリ配列
*ptr ---> MEM[ptr] // ptr は MEM[] 配列の添え字
470デフォルトの名無しさん
2019/02/13(水) 15:46:56.07ID:GHq8zte2 訂正:
BYTE MEM[4096 * 1024 * 1024]; // 4GB のメモリ配列
BYTE MEM[4096 * 1024 * 1024]; // 4GB のメモリ配列
471デフォルトの名無しさん
2019/02/13(水) 15:48:00.46ID:GHq8zte2 訂正:
Uint32 ptr = アドレス値;
Uint32 ptr = アドレス値;
472デフォルトの名無しさん
2019/02/13(水) 18:19:07.37ID:QnNf1eu6 恥の上塗り
473デフォルトの名無しさん
2019/02/13(水) 19:18:53.91ID:BFnAt9lr intptr_t とか、INTPTRとか。
474デフォルトの名無しさん
2019/02/13(水) 19:41:39.99ID:D91GFqhb eax
475デフォルトの名無しさん
2019/02/13(水) 22:43:21.58ID:8CyDgeqf 行儀よく バッファなんて 守れやしなかった
夜のサーバ オーバフロー起こしてまわった
*印見て アナルといわれた 早く添え字になりたかった
信じられぬ カーニハンとの 争いの中で
許しあい いったい何 解りあえただろう
うんざりしながら それでも過ごした ひとつだけ解ってたこと
このポインタからの 卒業
夜のサーバ オーバフロー起こしてまわった
*印見て アナルといわれた 早く添え字になりたかった
信じられぬ カーニハンとの 争いの中で
許しあい いったい何 解りあえただろう
うんざりしながら それでも過ごした ひとつだけ解ってたこと
このポインタからの 卒業
476デフォルトの名無しさん
2019/02/14(木) 07:38:16.87ID:fSoz/vTj まあstatic変数やglobal変数使ってリークしてないとか言い張るバカよりかは
ナマポ使えやとは思う。
それならまだコード修正効くからな。
初心者にスマポ使わせればリークしないコード書かせることができるって考えははっきりいって幻想だわ。
ナマポ使えやとは思う。
それならまだコード修正効くからな。
初心者にスマポ使わせればリークしないコード書かせることができるって考えははっきりいって幻想だわ。
477デフォルトの名無しさん
2019/02/14(木) 22:35:36.88ID:vW9ukCJU 昔研究室の後輩でポインタがわからないから全部グローバル変数でプログラム作ってるって奴がいて、
それはそれである意味すごいなって思ったわ。
マルチメディア系ライブラリを触る必要がある研究室なのだが。
元々組込系が得意な奴だったってのもあると思うけど。
それはそれである意味すごいなって思ったわ。
マルチメディア系ライブラリを触る必要がある研究室なのだが。
元々組込系が得意な奴だったってのもあると思うけど。
478デフォルトの名無しさん
2019/02/14(木) 22:50:47.58ID:tlcLfILV COBOLERだったんじゃね
479デフォルトの名無しさん
2019/02/15(金) 00:04:29.72ID:tnuHGyjk 一度切りの使い捨て用途とかなら全然よくね
480デフォルトの名無しさん
2019/02/15(金) 00:36:18.42ID:kpfA4lgp >>476
スマートポインタを使うとコード修正効かなくなるの?どういうこと?
スマートポインタを使うとコード修正効かなくなるの?どういうこと?
481デフォルトの名無しさん
2019/02/15(金) 00:46:46.72ID:TR5VS7Vw mp4boxをちょこっといじったのを作ろうとしたんだけど、
signed int32の計算で -2112000 / 48000 の結果が 89434 になるんですが。
VS2015のx64です。
signed int32の計算で -2112000 / 48000 の結果が 89434 になるんですが。
VS2015のx64です。
482デフォルトの名無しさん
2019/02/15(金) 06:57:51.95ID:OZ8Dcboc >>481 「-2112000 / 48000 の結果が 89434」
その環境を持ってないんで分からないけど、
-2112000 の32bit16進数表現が 0xffdfc600
89434 * 48000 == 4292832000.000 == 0xffdf6b00
両者のビットパターンが一致することと関係ありそうね。
被除数の -2112000 を64bitで表現する際に
符号拡張 0x_ffff_ffff_ffdf_c600 とすべきなのに
ゼロ拡張 0x_0000_0000_ffdf_c600 にしちゃって、
その後の計算は64bit正数でやってる感じかな。
その環境を持ってないんで分からないけど、
-2112000 の32bit16進数表現が 0xffdfc600
89434 * 48000 == 4292832000.000 == 0xffdf6b00
両者のビットパターンが一致することと関係ありそうね。
被除数の -2112000 を64bitで表現する際に
符号拡張 0x_ffff_ffff_ffdf_c600 とすべきなのに
ゼロ拡張 0x_0000_0000_ffdf_c600 にしちゃって、
その後の計算は64bit正数でやってる感じかな。
483デフォルトの名無しさん
2019/02/15(金) 07:20:58.81ID:1DfV94Wg >>480
本人がスマポ理解できてないってオチだろ
本人がスマポ理解できてないってオチだろ
484デフォルトの名無しさん
2019/02/15(金) 07:22:53.73ID:1DfV94Wg485482
2019/02/15(金) 07:53:28.61ID:OZ8Dcboc 再び >>481 「-2112000 / 48000 の結果が 89434」 (間違いを訂正)
-2112000 の32bit16進数表現が 0xffdfc600
89434 * 48000 == 4292832000.000 == 0xffdf6b00
ビットパターン一致してないね。桁数多くて見間違えちゃった(テヘペロ)。
-2112000 を32bitで表現すると 0xffdfc600 であり、
これをゼロ拡張した 0x_0000_0000_ffdf_fc600 == 4292855330 を
48000 で割り算して小数部を捨てれば 89434 という答えが出る。
ということなら合ってるかな。
-2112000 の32bit16進数表現が 0xffdfc600
89434 * 48000 == 4292832000.000 == 0xffdf6b00
ビットパターン一致してないね。桁数多くて見間違えちゃった(テヘペロ)。
-2112000 を32bitで表現すると 0xffdfc600 であり、
これをゼロ拡張した 0x_0000_0000_ffdf_fc600 == 4292855330 を
48000 で割り算して小数部を捨てれば 89434 という答えが出る。
ということなら合ってるかな。
487デフォルトの名無しさん
2019/02/15(金) 09:49:31.73ID:tuwIijw4488デフォルトの名無しさん
2019/02/15(金) 13:45:38.25ID:TNDmXWGM489デフォルトの名無しさん
2019/02/15(金) 21:13:40.77ID:kkRd+/gL490デフォルトの名無しさん
2019/02/17(日) 07:14:37.91ID:KxX3tJEE 超初歩的な質問になるのですが
scanf関数を使って20個未満の任意の数だけ、数値を配列変数で受け取りたいです
たとえば「2 4 8 9」と入力し、Enterが押されたらそれで確定
num[0]=2
num[1]=4
num[2]=8
num[3]=9
としたいわけです。
どうしたらよいでしょうか?
一応自分で考えたコード(期待通りの動きをしません)を掲載します
for(i=0;i<20;i++){
scanf("%d",&num[i]);
if(num[i]==‘¥n’){
break;
}
}
scanf関数を使って20個未満の任意の数だけ、数値を配列変数で受け取りたいです
たとえば「2 4 8 9」と入力し、Enterが押されたらそれで確定
num[0]=2
num[1]=4
num[2]=8
num[3]=9
としたいわけです。
どうしたらよいでしょうか?
一応自分で考えたコード(期待通りの動きをしません)を掲載します
for(i=0;i<20;i++){
scanf("%d",&num[i]);
if(num[i]==‘¥n’){
break;
}
}
491デフォルトの名無しさん
2019/02/17(日) 07:30:35.53ID:a45/WyPQ for(i=0;i<20;i++) if (scanf("%d",&num[i]) != 1) break;
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 債券・円・株「トリプル安」に…長期金利1.755%まで上昇、円は対ユーロで史上最安値 [蚤の市★]
- 中国側が首相答弁の撤回要求、日本側拒否★2 [夜のけいちゃん★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★5 [ぐれ★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★6 [BFU★]
- 映画「鬼滅の刃」の興行収入急減、日本行き航空券大量キャンセル…中国メディア報道 [蚤の市★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- ホテル業界、高市のせいで中国から大量キャンセル 「大変厳しい状態。一刻も早い収束を願います」 [271912485]
- 【正論】玉木雄一郎「高市さんの答弁は米軍が攻撃を受けた場合を前提としており、撤回するのは難しい」特定野党を完全論破 [519511584]
- 鈴木農水大臣「コメの価格が上がってるのは新米に切り替わったからです」 [256556981]
- 麻生太郎氏、高市政権と距離を置きはじめる(´・ω・`) [399259198]
- 岡田「中国が台湾近海を戦艦で制圧して米軍に攻撃したらどうなる?」高市「存立危機事態」
- んなり放題🍬のお🏡
