[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 12/03 12:10 / Filesize : 265 KB / Number-of Response : 1010
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け 156



1 名前:デフォルトの名無しさん [2020/09/28(月) 14:41:30.00 ID:QxfbhGyV0.net]
!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
codepad.org/

C11
www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C99
www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/

※前スレ
C言語なら俺に聞け 155
https://mevius.5ch.net/test/read.cgi/tech/1589120427/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

741 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 09:20:14.53 ID:I+zADhcc0.net]
>>731,733
なぜC言語なのかは>>724に聞いてくれ
少なくとも今どきmmapまで使える環境でメガも乗ってない環境って相当珍しいだろって話な

742 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 12:39:42.10 ID:1XmQmKI8d.net]
>>736
>>734

743 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 12:52:09.08 ID:AV0Gp17OM.net]
>>737
珍しくないと言うなら実例をあげればいいだけ

744 名前:デフォルトの名無しさん [2021/02/06(土) 10:12:48.76 ID:DFt8vUVO0.net]
mmapってUNIX系OSだけでは?他にもあるかも知れないが互換ライブラリ経由でそのOS固有の同機能のやつ呼んでたりしない?(それで良いなら良いんだが)

745 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 10:51:00.80 ID:PohEB++tF.net]
対象をhtmlに限定したのが敗因

746 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 11:26:44.70 ID:EjDQT0l8K.net]
>>739
メモリマップトファイル一般を指しての発言じゃないかな、CreateFileMapping()とか含めて。

>>740
たぶんシーケンシャルアクセスで足りるから、read()でええやんってなるよな。

747 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 11:45:50.67 ID:zn5WrP4C0.net]
>>739
何が問題なのかよくわからんが?

748 名前:デフォルトの名無しさん [2021/02/22(月) 07:04:45.29 ID:Xbe4DE+80.net]
どうやったらループを小さくしたり無くしたり出来るのか教えてほしい。

749 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 08:02:42.93 ID:NYs90WT8M.net]
べた書き?
printf("hello flat!\n");
printf("hello flat!\n");
printf("hello flat!\n");



750 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 17:21:30.68 ID:iIDQLaUs0.net]
標準ライブラリにある処理はなるべく標準ライブラリのを使うとか
ループをまとめて関数に出すとかでいいんじゃないの?
根本的な解決にはならないかもだけど複雑度は下がる
あとはアルゴリズムの改善しかないんやない

751 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 02:48:11.51 ID:VIkkm8/qd.net]
>>739
実装は知らんがむしろwinでは頻用すると思う
80'後半くらいに生まれたそろそろ古参なスクリプト言語(Pythonなど)には大体ある
スクリプト故に富豪的に全部載せ

752 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 03:04:42.97 ID:VIkkm8/qd.net]
>>743
ループ変数をi, j, kとすれば、int ijk(範囲はi*j*k)とまとめればネストレベル3→1にできるよ
i = ijk/j/k
j = ijk%(j*k)/k
k = ijk%kね
パフォーマンスの利点

753 名前:烽る
mo量子化学計算はナイーブには最低4段のforが要求されるんで、かなり重宝
なんで4段をcollapseしたいけど、他人が初見で解釈するのはちょっと無理強いなので控えてる
[]
[ここ壊れてます]

754 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 03:15:27.68 ID:VIkkm8/qd.net]
いや今書いたのも改めて並べるとmodに慣れていと1分くらい考えるか…
二段は簡潔なのでイディオムとして使って良いと思う
i*jを走るループ変数ijに対し、i==ij/j, j==ij%j
ネストは半分になるし可読性もよいので、多分ベストプラクティス

ネストしたループを全てワンライナーで書けるFortranが羨ましい

755 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 03:42:44.91 ID:1ia+Vnu00.net]
divもmodもクソ遅いと思うんですがそれは

756 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 04:31:33.75 ID:VIkkm8/qd.net]
>>749
ステップ数で考えてたからそういう視点は無かったかも、精々2倍程度だし見落としてた

-o3とかするとベンチ的には速いから最適化とか効いてるんだろうかね?

757 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 04:35:35.49 ID:VIkkm8/qd.net]
だからといってわざわざ速い最適化divmod拾ってくるまでの価値も無いし、つまらんハックか
猛省

758 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 08:24:27.89 ID:NtDnGIIYK.net]
まあ定数の割り算は掛け算で実装するよな

759 名前:751 mailto:sage [2021/02/23(火) 12:00:01.73 ID:EYNng8zFd.net]
>>752
今アセンブリ見てみたら2147...647=2^32-1を引いて頑張ってる様子が見えた!gcc -O3/win
色々パラメータ弄って様子見ようとしたら普通に割り出したので混乱したが、実行時に与えるとフォールバックするよう
コンパイル時に定数で与えたらそうするっぽい
勉強になった



760 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 12:21:23.56 ID:1ia+Vnu00.net]
目安でしかないがx86-64ではmulと比べてdivやmodはレイテンシ2倍どころではない場合が多い

https://www.agner.org/optimize/instruction_tables.pdf

パフォーマンスが重要な場合は除数を定数にするか2の冪にしてシフト/論理積にする

761 名前:デフォルトの名無しさん [2021/02/24(水) 15:46:51.63 ID:/D2VYVJH0.net]
ソフトウェア割り込みプログラムは書けるのか

762 名前:デフォルトの名無しさん [2021/02/25(木) 06:12:34.32 ID:R7WVwVFS0.net]
>>755
インラインアセンブラ必須かな

763 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 07:07:20.11 ID:bxBNuN1v0.net]
環境次第
組み込み系の処理系だと割り込みハンドラーを書けたり割り込みフラグの制御ができたりするのはよくある

764 名前:デフォルトの名無しさん [2021/02/25(木) 09:55:57.73 ID:R7WVwVFS0.net]
>>757
それはC言語仕様には無い特殊な命令。SHのCコンパイラとか。

765 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 19:11:28.17 ID:k63j55rm0.net]
VCで作った実行ファイルを
cgiファイルに変える方法て
わからない?
どうしてもc.cgi.exeになって
しまう

766 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 19:17:09.21 ID:JLHf2OjdM.net]
>>759
どのHTTPサーバか、どんな設定にしてるかにもよるけど
名前だけ変えればおkじゃねーの?

767 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 20:00:24.23 ID:MOr3wCfr0.net]
ファイル名変えておいとくだけなんとちゃうの?

768 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 20:06:31.57 ID:ZW7ncKwI0.net]
Windows系サーバーだったら、
実行ファイルc.exeをc.cgiにリネームすれば動くはず

769 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 20:47:45.34 ID:yh+1kBamK.net]
そもそもCの話じゃないんだが
>>759
エクスプローラの表示の設定を「拡張子を表示する」モードにすべし

「拡張子を表示しない」のチェックを外す方式だったかもしれん



770 名前:デフォルトの名無しさん [2021/02/26(金) 03:45:13.89 ID:5d4w5oMJ0.net]
>>763
スレチ

771 名前:デフォルトの名無しさん mailto:sage [2021/02/26(金) 06:57:40.05 ID:eCf8RuSVK.net]
//何だよ俺のせいかいw
//じゃせいぜいCだけででがんばりや
#include <stdio.h>
int main() { return rename("c.cgi.exe", "c.cgi"); }

772 名前:デフォルトの名無しさん mailto:sage [2021/02/26(金) 08:02:43.73 ID:M2eccXrmd.net]
renameってstdio.hだっけ?

773 名前:デフォルトの名無しさん mailto:sage [2021/02/26(金) 09:51:30.74 ID:31AFaQsJ0.net]
>>766
stdioじゃよ

774 名前:デフォルトの名無しさん mailto:sage [2021/02/26(金) 12:12:32.73 ID:M2eccXrmd.net]
げ、本当だ

775 名前:デフォルトの名無しさん mailto:sage [2021/03/15(月) 16:52:25.12 ID:XyNDIUjTa.net]
すみません、質問させてください

exturn FUNC(void, define1) 関数名(void)

ってなってるのが、関数のプロトタイプ宣言であることは理解できているのですが
FUNC()の意味が分からないです
define1にはキーワード定義だけされたdefineが入ってます

776 名前:デフォルトの名無しさん mailto:sage [2021/03/15(月) 17:06:32.77 ID:Db4OPSpGM.net]
>>769
それはC言語の文法じゃなくて、あなたのプロジェクト固有のマクロなので、同僚に聞くかgrepしてください

777 名前:デフォルトの名無しさん mailto:sage [2021/03/15(月) 17:07:39.42 ID:XyNDIUjTa.net]
>>770
ですよねー
もう聞くわ

778 名前:デフォルトの名無しさん mailto:sage [2021/03/16(火) 08:22:50.63 ID:7emEuadh0.net]
Cの文法内に収まる FUNC() って

一般C
#define FUNC(ret,opt) ret
Microsoft系のやつ 呼び出し規約まで対応
#define FUNC(ret,opt) ret opt

ぐらいしか想像つかんな それを吸収しようとしてるのかしら?

779 名前:デフォルトの名無しさん [2021/03/19(金) 19:09:51.97 ID:mKZFPhjYM.net]
ret opt の記述順を変えなきゃなんないコンパイラ併用でもしてなきゃ
必然性無いよな



780 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 18:24:42.50 ID:1rqnmNJD0.net]
VS2019を使用してます。
c言語でハッシュテーブルを使いたい場合、
定番のライブラリってありますか?
自作は考えてません。

781 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 18:43:09.76 ID:f5CNtQYv0.net]
C++ hashクラスを使う
C 自作する

スキな道を歩もう

782 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 19:49:36.36 ID:bD1toMMoM.net]
Cにはない
多少は作るに該当するが、GPL汚染気にしないならhlist(list.h)かいっそのことrbtree引っ張ってくるのが楽
hlistは覚えてないがfreeBSDにもlist_headはあったと思うから雑に書いて作れる

783 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 20:00:40.49 ID:1rqnmNJD0.net]
>>775-776
ありがとうございます。

784 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 17:39:11.35 ID:BhPjOTnw0.net]
境界調整について教えて下さい
typedef struct stru{
int inta;
char ch;
double db;
} Str;
という構造体を作って、
Str st = {10 , 'n' , 5.20};

printf("構造体全体の大きさは %dバイト アドレスは %p \n", sizeof(st) , &st);
printf("inta の大きさ %dバイト アドレスは %p 値は %d \n", sizeof(st.inta), &st.inta , st.inta);
printf("ch の大きさ %dバイト アドレスは %p 値は %c \n", sizeof(st.ch) , &st.ch , st.ch);
printf("db の大きさ %dバイト アドレスは %p 値は %lf \n", sizeof(st.db) , &st.db , st.db);

としたところ、

構造体全体の大きさは 16バイト アドレスは 0019FF2C
inta の大きさ 4バイト アドレスは 0019FF2C 値は 10
ch の大きさ 1バイト アドレスは 0019FF30 値は n
db の大きさ 8バイト アドレスは 0019FF34 値は 5.200000
という結果が得られたんですけど、この中で
0019FF30から1バイト分には'n'という値が入っていて、
0019FF34から8バイト分には5.200000という値が入っているわけですよね?
では0019FF31から0019FF34までは何があるの?

785 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 17:55:49.95 ID:NyQKOVd9d.net]
何もない

786 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 18:15:58.84 ID:IaPVNFDHa.net]
ごみ

787 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 18:21:46.90 ID:uqOlgHvIM.net]
>>778
何があるかわからないしむりやり読んだら何が起こるかわからない

ってことになってる

788 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 18:27:06.04 ID:4kXIzh+CM.net]
>>778
ファイルに書き出してバイナリダンプ
gdbでx

見ても大したことない

789 名前:778 mailto:sage [2021/04/26(月) 18:28:20.87 ID:BhPjOTnw0.net]
その領域はとにかく使えないって事なんすかね。



790 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 18:31:26.64 ID:NyQKOVd9d.net]
そうなんです

791 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 18:32:08.60 ID:TR73VE240.net]
使いたいならchの後にcharを3つ作ればいいじゃない

792 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 20:06:39.04 ID:fVzcGJCCa.net]
>>778
__attribute__ ((packed))

793 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 20:43:03.58 ID:+l9LtKe60.net]
#pragma pack(push,1)
>>778
#pragma pack(pop)

794 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 22:14:43.60 ID:BhPjOTnw0.net]
またいつの間にかレスが。
>>784
それもありか。なるほど。

>>786,787
そういうのがあるんですか。入門書なんかには出てこないよね、それw
教えていただきありがとです

795 名前:788 mailto:sage [2021/04/26(月) 22:16:02.71 ID:BhPjOTnw0.net]
>>784>>785だった

796 名前:デフォルトの名無しさん [2021/04/26(月) 22:20:18.66 ID:fe3Q/YJ30.net]
訓練でC言語を習っています。
就職先としてはJAVAの客先常駐になると思うのですが、
C言語も習う以上はある程度使えるようになりたいと思っています。
ポインタが難しいとよく見るのですが、勉強になるウェブサイトが
ありましたら教えてください。
もしくはポインタだけの参考書があるようなのですが、
それを買った方が良いですかね?

797 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 06:03:07.86 ID:RrDgDJ6XM.net]
ゆとり?
技術的な内容ならまだしも学習方法や心構えまで他人に丸投げするのは職業人の姿勢として如何なものか

798 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 18:46:29.71 ID:7AKt1vSf0.net]
そういう時代
熱くなるな

PCを持ってないような人がソフト開発者として面接に来るような時代

799 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 21:52:06.89 ID:PZc7df0ca.net]
Cで Windows、Linux、macOS のすべてで動作するコンソールアプリを作りました
標準のライブラリのみを使用していたつもりでも、知らずにGNU拡張を使用していたり、若干の移植の障害はありましたが、それほどではありませんでした
同じようなことを C++ でやろうとした場合、Cより難しくなりそうでしょうか、そうでもないでしょうか
C++ でやるからには STL は使いたいです



800 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 22:44:05.13 ID:7AKt1vSf0.net]
同じようなもんじゃない?

801 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 23:21:11.19 ID:PlZRAN+K0.net]
言語仕様としてのGNU拡張は使ってもライセンスに触れないよな?
触れるのはライブラリ使用した場合じゃないか?

802 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 23:35:23.05 ID:4KD2riuz0.net]
コンパイラ独自の拡張であってポータビリティに欠けるってだけで
それ自体がGNUライセンスに引っかかるわけではない

803 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 23:56:50.52 ID:sVhsMckNM.net]
>>790
・格納先を渡す(普通のポインタ
・callee alloc(二重ポインタ
・関数ポインタ
これだけ分かってればいいというか、仕事でならこの範囲だけにしとけ

804 名前:デフォルトの名無しさん mailto:sage [2021/04/29(木) 00:15:24.35 ID:T1kQSA270.net]
意外と引っかかるのは、複雑な変数宣言を読み解くこと

805 名前:793 mailto:sage [2021/04/29(木) 10:41:18.72 ID:8DhczGXra.net]
ご意見ありがとうございました
やはり、掛かる手間は同じようなものですかね

806 名前:デフォルトの名無しさん mailto:sage [2021/04/29(木) 11:08:27.39 ID:1rAkIDNr0.net]
基本文法を憶えたら何かまとまったアプリを作んないと
ただ言語そのものを習ってそれっきりだと忘れるだけだぞ

807 名前:デフォルトの名無しさん mailto:sage [2021/04/29(木) 13:50:03.41 ID:56IZFSRD0.net]
所詮は道具だし、使わないと忘れる

808 名前: mailto:sage [2021/04/29(木) 16:32:35.09 ID:q0JKcoqRH.net]
>>793
C++11 以降は、例えばスレッド制御・ファイルシステムをライブラリに取り込む、など積極的に環境依存が少なくなるように動いている(ように私には見える)ので、多分移植はもっともっと易しくなる、と思います、失礼、易しくなる気がしないでもありません‥‥

809 名前: mailto:sage [2021/04/29(木) 16:39:37.88 ID:q0JKcoqRH.net]
>>790
「新・標準プログラマーズライブラリ C言語 ポインタ完全制覇」前橋 和弥著
https://www.%61%6d%61%7a%6f%6e.co.jp/dp/B077ZTQY62/
ポインタを完全制覇してくれる本だそうです、私も興味があったのでポチりました‥‥



810 名前:793 mailto:sage [2021/04/29(木) 16:48:12.19 ID:loQVmfSpa.net]
>>802
ありがとうございます
そんなこともあるのかなと、淡い期待もしつつ… でした

811 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 15:45:22.42 ID:LfIZA/yy0.net]
cについてほとんど知らないけど、組み込みがメインな感じですか?

812 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 15:56:09.60 ID:/1wJlD5g0.net]
システムプログラミングの方が多いんでない?元々それ用だし
OSのインターフェース提供はどこもC

813 名前:はちみつ餃子 mailto:sage [2021/05/02(日) 16:01:37.32 ID:VAfyzxcR0.net]
パソコンでも低レイヤ (カーネルとかデバイスドライバとか) は C で書くことも珍しくはないし、
アプリケーションのめっちゃ速度が重要なとことかは C で書いたほうがチューニングしやすい。
言語処理系なんかはだいたい C か C++ で実装されるよ。 (Python とか Ruby とか Perl とか。)

ハードウェアの都合に合わせたチューニングが必要なところはパソコンにもまだまだ有って、
割合で言えばそれほど多くは無いけど、
絶対数で言えば組み込みで C が使われるよりはパソコンで C が使われるほうが多いと思う。
(数値的な根拠があるわけじゃなくて私の印象だけど。)

814 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 16:46:12.37 ID:3j0DSsAI0.net]
これからはカーネルドライバもRustで書こうぜ

815 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 18:40:43.65 ID:r2Ed4Ypi0.net]
>>808
だからメモリ割り当てでABENDするような言語系を
カーネルで使えるわけないでしょw

2021年4月15日 パニックお断り―Linus,"Rust for Linux"の盛り上がりに釘を刺す:Linux Daily Topics|gihyo.jp … 技術評論社
https://gihyo.jp/admin/clip/01/linux_dt/202104/15

816 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 20:01:40.03 ID:3j0DSsAI0.net]
>>809
だいじょぶだろ
そのうちなんかキャッチする機構とか実装すんだろ
そしたらLinusもニタニタしながら受け入れるよ

817 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 22:32:14.89 ID:r2Ed4Ypi0.net]
>>810
んじゃ、そうなってから>>808みたいなことは言おうねw
狸が逃げるよw

818 名前:デフォルトの名無しさん mailto:sage [2021/05/03(月) 12:38:32.98 ID:2qlH4pSsM.net]
>>811
まさにそうする話がもまいの提示した記事に書いてあるんよ

819 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 21:44:15.09 ID:vGOhdVnf0.net]
>>811
https://www.tag1consulting.com/blog/interview-linus-torvalds-linux-and-git

「Rustなー、まあそのうちわかるんじゃねーの?
 コアはねーだろうけどドライバならいんじゃね?
 C言語の置き換えっつーよりCの補佐的な?」
って言ってるし、これ読む限り Linusもだいぶ前向きじゃん



820 名前:デフォルトの名無しさん [2021/05/08(土) 20:10:13.24 ID:jbZm9MmR0.net]
github.com/bear24rw/alsa-utils/blob/master/aplay/aplay.c :135行
static off64_t pbrec_count = LLONG_MAX, fdcount;

static off64_t pbrec_count = LLONG_MAX;
と書かれていない理由を400字以内で述べよ。

ちなみに、我が家では LLONG_MAX値 == fdcount値 です。

821 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 22:16:59.18 ID:4nIz2VjA0.net]
しらねえ。
     ↑
   5文字目

822 名前:デフォルトの名無しさん [2021/05/09(日) 13:32:52.94 ID:WMytKT+1F.net]
>static off64_t pbrec_count = LLONG_MAX, fdcount;
>が
>static off64_t pbrec_count = LLONG_MAX;
>と書かれていない理由を400字以内で述べよ。

知らんがな

>static off64_t pbrec_count = LLONG_MAX, fdcount;
>が
>static off64_t pbrec_count = fdcount;
>と書かれていない理由を400字以内で述べよ。

書いた香具師に聴け

823 名前:デフォルトの名無しさん [2021/05/25(火) 13:13:50.22 ID:0e19GInL0.net]
int (**c)[];

int *(*e[]);
の意味がわからずに困っています。
ちなみに二つとも意味がわかりません。これらは同じものなんでしょうか?

824 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 13:28:28.93 ID:d4PPfL2v0.net]
cはint配列へのポインタへのポインタ
eはintポインタへのポインタの配列で、丸括弧は不要
cとeは同じではない

825 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 13:33:48.93 ID:tg9vUr3N0.net]
ややこしそうなのは途中に strust や typedef 使って先送りにする

826 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 13:37:45.63 ID:tg9vUr3N0.net]
struct

827 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 13:44:44.11 ID:7uNVaR2o0.net]
ポインタ変数定義に()が付くと理解が困難になる・・・。

828 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 13:50:25.07 ID:mW0d20UP0.net]
より複雑な宣言子の解釈

https://docs.microsoft.com/ja-jp/cpp/c-language/interpreting-more-complex-declarators?view=msvc-160

829 名前:デフォルトの名無しさん [2021/05/25(火) 13:57:49.19 ID:0e19GInL0.net]
>>822
これが一番わかりやすかったです。
ありがとうございました。



830 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 19:01:00.19 ID:5zVTpare0.net]
小生使う機会ないんでそんな複雑な記述の経験ないし機会あっても出来る自信ないのだけれど、アセンブラで書くと縦長になるソレを横に圧縮したC言語って、ホント効率落とさず物臭する為の記述だよね。
(アセンブラよりは)安全だし。

831 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 21:20:58.20 ID:d4PPfL2v0.net]
ケントンプソンの面倒くさがりをデニスリッチーが後継した高級アセンブラ

832 名前:デフォルトの名無しさん [2021/05/25(火) 21:26:46.44 ID:mNrV1IEb0.net]
cdecl で説明してもらえば?

833 名前:デフォルトの名無しさん [2021/05/26(水) 09:42:42.04 ID:mfYAtZMN0.net]
pkg install cdecl すると,c++decl -> cdecl しかsym-linkしてないので
手動でexplain -> cdecl cast -> cdecl declare -> cdecl もいれておいた.
で,
explain 'int (**c)[]'
declare c as pointer to pointer to array of int

explain 'int *(*e[]);'
declare e as array of pointer to pointer to int

と説明された.

834 名前:デフォルトの名無しさん mailto:sage [2021/05/26(水) 11:19:17.43 ID:2/BE6bBSF.net]
>>817-818
++c; // ← Error
++e; // ← OK

説明してみ?

835 名前:デフォルトの名無しさん [2021/05/26(水) 11:21:32.69 ID:2/BE6bBSF.net]
ああ間違えたω
>>817-818
++c; // ← OK
++(c[0]); // ← Error
++e; // ← OK
++(e[0]); // ← OK

836 名前:デフォルトの名無しさん mailto:sage [2021/05/26(水) 12:07:18.36 ID:DNuuAFHS0.net]
++eがOKなわけねえだろw

837 名前:デフォルトの名無しさん mailto:sage [2021/05/27(木) 10:47:37.95 ID:kQVwJQto0.net]
ID:2/BE6bBSFは逃げたかw
まあ逃げたくもなるよな
あんな赤っ恥w

838 名前:デフォルトの名無しさん mailto:sage [2021/05/27(木) 14:56:50.43 ID:UXlES6Sbd.net]
typespecifer declarator-initializer;
と実質的に型を決める文法要素が二分されてるのがイケてないとは思う
=で示されるinitializerまたは代入式の右辺でアサインされる対象が左辺そのものでなく、declaratorの識別子部分なのも=の意味論(等しくする)に合ってないよなあ

まあ慣れるんだけど

839 名前:デフォルトの名無しさん mailto:sage [2021/05/27(木) 15:03:11.46 ID:UXlES6Sbd.net]
関数ポインタと配列とポインタが入り交じるようなときは、各部分毎にtypedefして、数行に分けて型を組み立てるのがよいと思う



840 名前:デフォルトの名無しさん mailto:sage [2021/05/27(木) 15:08:30.66 ID:UXlES6Sbd.net]
c23では宣言(というか殆どの構文)に付けられるattribute([[attr]])が入るけど、これ改造して[[type]] identifier;の形で宣言するように(仕様上は)できるよね
c23以降の規格で取り入れられないかな?

841 名前:デフォルトの名無しさん mailto:sage [2021/05/28(金) 01:02:59.83 ID:7zb2zdx50.net]
基本情報で分からないとこあるんで教えてください。。
Cに入るのがなんでキなんでしょうか
p→coursenameはポインタだから、出力する時は*p→coursenameにすべきでは無いでしょうか
https://i.imgur.com/8Lp9aMx.jpg
https://i.imgur.com/DgNEbGT.jpg
https://i.imgur.com/xvvs1oJ.jpg
https://i.imgur.com/3bG8iC8.jpg
https://i.imgur.com/qHhb9jj.jpg






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<265KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef