!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/
C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf
C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html
C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/
※前スレ
C言語なら俺に聞け 153
https://mevius.5ch.net/test/read.cgi/tech/1566050562/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
C言語なら俺に聞け 154
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ bf63-lB9F)
2020/01/14(火) 19:32:30.16ID:SgRnb4BR0634デフォルトの名無しさん (ワッチョイ 9ff8-NFZI)
2020/04/16(木) 18:45:02.86ID:SI5o5TtZ0 >>631
おお、ちゃんと出力されるんだねthx
おお、ちゃんと出力されるんだねthx
635デフォルトの名無しさん (ワッチョイ 57ca-1VFb)
2020/04/16(木) 21:43:50.28ID:CVnBB3Bm0636デフォルトの名無しさん (ワッチョイ b732-xa8R)
2020/04/16(木) 21:47:10.87ID:gk/+OIqE0 >>633
ポインタで返さないなら、つまり関数内でメモリ確保したストラクチャでも値そのものを返すのであれば、受け取った側でdeleteしなくてもいいの?
typedef strudt{ char x[10000], y[10000];] XY;
XY func(){
XY a;
a.x =1; a.y = 2;
return a;
}
void main(){
XY xy = func();
}
ポインタで返さないなら、つまり関数内でメモリ確保したストラクチャでも値そのものを返すのであれば、受け取った側でdeleteしなくてもいいの?
typedef strudt{ char x[10000], y[10000];] XY;
XY func(){
XY a;
a.x =1; a.y = 2;
return a;
}
void main(){
XY xy = func();
}
637デフォルトの名無しさん (ワッチョイ 57ae-TQ1c)
2020/04/16(木) 22:09:56.27ID:B9NPrh+z0 おかしくね?
638デフォルトの名無しさん (ワッチョイ 57ca-1VFb)
2020/04/16(木) 22:21:38.07ID:CVnBB3Bm0 >>636
その a のためのメモリはスタックフレーム上に確保されてて、関数から return すると黙ってても消えて無くなる領域だから、
new とか malloc なんかでヒープ上に確保するメモリと違って delete とか free とかはいらない。
関数 func を呼び出してる間、xy の領域と a の領域は同時に存在し、return するときに a の内容を xy にコピーして、a は func のスタックフレームと共に消滅する。
その a のためのメモリはスタックフレーム上に確保されてて、関数から return すると黙ってても消えて無くなる領域だから、
new とか malloc なんかでヒープ上に確保するメモリと違って delete とか free とかはいらない。
関数 func を呼び出してる間、xy の領域と a の領域は同時に存在し、return するときに a の内容を xy にコピーして、a は func のスタックフレームと共に消滅する。
639デフォルトの名無しさん (ワッチョイ 37b3-3r4m)
2020/04/16(木) 22:25:10.82ID:dbvXh7HJ0 int main(){
int a = 1;
return a;
}
これと一緒
int a = 1;
return a;
}
これと一緒
640デフォルトの名無しさん (ワッチョイ 9f63-Ho7r)
2020/04/16(木) 22:53:15.47ID:Vn4RPyR40 うつりにけりなわが値
やがてすべてが過ぎ去るあとも
あなただけを想う
やがてすべてが過ぎ去るあとも
あなただけを想う
641デフォルトの名無しさん (ワッチョイ 9fc5-ycCE)
2020/04/16(木) 23:41:19.91ID:GrYlaJ670 詩的!
抱いて!
抱いて!
642デフォルトの名無しさん (ワッチョイ b732-xa8R)
2020/04/17(金) 07:11:17.78ID:AqgoekXO0 >>638
なるほど!!よくわかりました。
関数はreturn値を呼び出し側にコピーして実行完了となりstackを開放する。
local 変数はstack上に作るので実行完了まではlocal変数の内容は保持される
が実行完了で自動的に消滅する。
ということですね。
なるほど!!よくわかりました。
関数はreturn値を呼び出し側にコピーして実行完了となりstackを開放する。
local 変数はstack上に作るので実行完了まではlocal変数の内容は保持される
が実行完了で自動的に消滅する。
ということですね。
643デフォルトの名無しさん (ブーイモ MMbb-fsvn)
2020/04/17(金) 11:34:39.45ID:0SFvwi0RM 常識過ぎてデフォルトコピーコンストラクタみたいな盲腸がC++に埋め込まれてしまったんだよ
あくまでC言語の中でコーダーが工夫し不便を乗り越えてた常識なのにね
あくまでC言語の中でコーダーが工夫し不便を乗り越えてた常識なのにね
644デフォルトの名無しさん (ワッチョイ 9f63-Ho7r)
2020/04/17(金) 12:08:02.28ID:uZ4GpX9X0 >人間の虫垂は、親知らずや体毛と同じように、かつては必要とされていたが今は
>なくても問題なくやっていける器官と考えられいた。
>しかし、虫垂がかつて何をしていたのか、また実際にいま用無しなのかについては、
>これまで明確になっていなかった。そんななか、米ミッドウェスタン大学の研究者が
>主体となった研究が発表され、この問題にひとつの答えが提示された。虫垂は、
>免疫細胞の反応を促し、有益な腸内細菌(善玉菌)が減少するとこれを増やすという
>二次的な免疫機能を担っているという。この役割は限定的な形ながら、いまも人間
>の体内で継続して機能している。
https://www.kagaku-kentei.jp/news_detail/data/355
むだなものなんて一つもない
>なくても問題なくやっていける器官と考えられいた。
>しかし、虫垂がかつて何をしていたのか、また実際にいま用無しなのかについては、
>これまで明確になっていなかった。そんななか、米ミッドウェスタン大学の研究者が
>主体となった研究が発表され、この問題にひとつの答えが提示された。虫垂は、
>免疫細胞の反応を促し、有益な腸内細菌(善玉菌)が減少するとこれを増やすという
>二次的な免疫機能を担っているという。この役割は限定的な形ながら、いまも人間
>の体内で継続して機能している。
https://www.kagaku-kentei.jp/news_detail/data/355
むだなものなんて一つもない
645デフォルトの名無しさん (ワッチョイ 7705-Ho7r)
2020/04/17(金) 12:30:59.31ID:AkLTGvvI0646デフォルトの名無しさん (ワッチョイ 37b3-3r4m)
2020/04/17(金) 12:32:10.12ID:uUpf2Y3l0 人間自体無駄
647デフォルトの名無しさん (ワイーワ2 FFdf-xa8R)
2020/04/17(金) 14:09:42.57ID:3B9MCfUYF 虫垂炎で虫垂取っちゃった人はコロチャンに弱いってことかな
648デフォルトの名無しさん (ワッチョイ 37b3-3r4m)
2020/04/17(金) 14:35:48.83ID:uUpf2Y3l0 いらないと思って取っちゃったよ
649デフォルトの名無しさん (ワイーワ2 FFdf-xa8R)
2020/04/17(金) 15:10:48.97ID:3B9MCfUYF ⑅
650デフォルトの名無しさん (ワッチョイ 9f0e-Ho7r)
2020/04/17(金) 16:18:03.57ID:xoWFQBId0 パイエル板みたいなもんか
651デフォルトの名無しさん (ワッチョイ 9fad-Ho7r)
2020/04/18(土) 13:49:13.30ID:VYQrLT4k0652デフォルトの名無しさん (ワッチョイ 9fad-Ho7r)
2020/04/18(土) 14:51:32.00ID:VYQrLT4k0 >>646
この世界全体が無駄と言えば無駄だな。
まあしかし人間は自分の欲望を満たすものに対して無駄がないと感じるだけのことなので、
欲望がなくなればそれもなり全てはあってもなくても良いどうでも良いものになる。
この世界全体が無駄と言えば無駄だな。
まあしかし人間は自分の欲望を満たすものに対して無駄がないと感じるだけのことなので、
欲望がなくなればそれもなり全てはあってもなくても良いどうでも良いものになる。
653デフォルトの名無しさん (ワッチョイ 9fa6-LSCM)
2020/04/20(月) 16:26:18.96ID:LGT//Bm+0654デフォルトの名無しさん (アウアウエー Sadf-xa8R)
2020/04/21(火) 11:05:50.29ID:dT9nwdnwa 石田晴久ってまだ生きてんの?
655デフォルトの名無しさん (ワンミングク MM7f-z1+B)
2020/04/21(火) 12:05:14.25ID:asepdmU3M 鬼籍の人
656デフォルトの名無しさん (ワッチョイ 9f0e-Ho7r)
2020/04/21(火) 12:19:27.00ID:kyWq+dbI0657デフォルトの名無しさん (ワッチョイ 4d63-enhv)
2020/04/22(水) 04:04:56.61ID:P99VZQTl0 c言語用のおすすめwebフレームワークplz
658デフォルトの名無しさん (ワッチョイ a601-zAxQ)
2020/04/22(水) 08:56:18.23ID:tIkd0GYk0 go言語ならたくさんあるんじゃね
659デフォルトの名無しさん (ワントンキン MMac-3xit)
2020/04/22(水) 09:31:17.33ID:94fF+/tAM 4(C)言語、5(GO)言語とおすすめwebフレームワークが増えるの?
6言語は何?
6言語は何?
660デフォルトの名無しさん (アウアウエー Sa6a-0GGu)
2020/04/22(水) 10:11:23.93ID:O/jaLKmba サイボウズのCGIってCで描かれてるんだっけ
661デフォルトの名無しさん (ワッチョイ 5c01-0GGu)
2020/04/22(水) 10:20:50.37ID:obS+r2in0 >>646
こういう悟り厨ほど自分が死ぬときにはめちゃくちゃ言い訳しまくるもんよ。
こういう悟り厨ほど自分が死ぬときにはめちゃくちゃ言い訳しまくるもんよ。
662デフォルトの名無しさん (ワッチョイ ae85-R0M4)
2020/04/23(木) 23:53:15.47ID:wF6p0RUq0 英小文字の出現回数を出現した文字だけ数えたいのですがうまくいきません
ご指導お願いします
#include <stdio.h>
int main(void) {
char ch;
int cc[26] = {0};
int i;
for(;(ch=getchar())!=EOF;){
if((ch>='a')&&(ch<='z')){
cc[ch-'a']++;
}
}
for (i='a'; i<'z'; i++) printf("%c:%d\n", i, cc[i+'a']);
return 0;
}
ご指導お願いします
#include <stdio.h>
int main(void) {
char ch;
int cc[26] = {0};
int i;
for(;(ch=getchar())!=EOF;){
if((ch>='a')&&(ch<='z')){
cc[ch-'a']++;
}
}
for (i='a'; i<'z'; i++) printf("%c:%d\n", i, cc[i+'a']);
return 0;
}
663デフォルトの名無しさん (ワッチョイ ba63-1Gce)
2020/04/24(金) 00:19:05.81ID:dt1qmdTj0 これはC言語なのか?
664デフォルトの名無しさん (ワッチョイ ae85-R0M4)
2020/04/24(金) 00:23:10.36ID:zB+8iNgr0 いたらなくてすみませんがC言語です
665デフォルトの名無しさん (ワッチョイ a601-zAxQ)
2020/04/24(金) 00:29:10.67ID:SZShfMPk0 これは宿題なのか?
666デフォルトの名無しさん (ワッチョイ ba63-1Gce)
2020/04/24(金) 00:32:48.00ID:dt1qmdTj0 出力の箇所
× printf("%c:%d\n", i, cc[i+'a']);
○ printf("%c:%d\n", i, cc[i-'a']);
× printf("%c:%d\n", i, cc[i+'a']);
○ printf("%c:%d\n", i, cc[i-'a']);
667デフォルトの名無しさん (ワッチョイ ba63-1Gce)
2020/04/24(金) 00:36:40.55ID:dt1qmdTj0 それともう一つ
char ch ; は
int ch; にした方が良い
char ch ; は
int ch; にした方が良い
668デフォルトの名無しさん (ワッチョイ 1caf-808h)
2020/04/24(金) 01:12:46.99ID:onlsKD/x0 https://paiza.io/projects/z-ohjvsIhSR6X_lC8q7MKA
コンパイルが通りません。
どこが悪いか教えてもらえないでしょうか。
-Iと-Lの使い方や、regexのコンパイル?(.a)の指定方法等を調べてみたのですがわかりません。
C:\clang>gcc -I "C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\opt\include" -L "C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\opt\lib" filename.c
C:\Users\maru\AppData\Local\Temp\ccgTVd7X.o:filename.c:(.text+0x75): undefined reference to `regcomp'
C:\Users\maru\AppData\Local\Temp\ccgTVd7X.o:filename.c:(.text+0xf0): undefined reference to `regexec'
C:\Users\maru\AppData\Local\Temp\ccgTVd7X.o:filename.c:(.text+0x19a): undefined reference to `regfree'
collect2.exe: error: ld returned 1 exit status
libregex.aとregex.hは上記pathに存在します。
環境:
windows10 64bit
gcc version 8.1.0 (x86_64-posix-seh-rev0, Built by MinGW-W64 project)
mingw-w64-install.exeで64bit版をインストールしました。
コンパイルが通りません。
どこが悪いか教えてもらえないでしょうか。
-Iと-Lの使い方や、regexのコンパイル?(.a)の指定方法等を調べてみたのですがわかりません。
C:\clang>gcc -I "C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\opt\include" -L "C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\opt\lib" filename.c
C:\Users\maru\AppData\Local\Temp\ccgTVd7X.o:filename.c:(.text+0x75): undefined reference to `regcomp'
C:\Users\maru\AppData\Local\Temp\ccgTVd7X.o:filename.c:(.text+0xf0): undefined reference to `regexec'
C:\Users\maru\AppData\Local\Temp\ccgTVd7X.o:filename.c:(.text+0x19a): undefined reference to `regfree'
collect2.exe: error: ld returned 1 exit status
libregex.aとregex.hは上記pathに存在します。
環境:
windows10 64bit
gcc version 8.1.0 (x86_64-posix-seh-rev0, Built by MinGW-W64 project)
mingw-w64-install.exeで64bit版をインストールしました。
669662 (ワッチョイ ae85-R0M4)
2020/04/24(金) 01:29:37.91ID:zB+8iNgr0670デフォルトの名無しさん (ワッチョイ 6ef9-QpYc)
2020/04/24(金) 04:35:22.10ID:QT76eCNa0 「入力されてない文字を出力したくない」のだから
出力するところにその条件を書けばよい
自分でデバッグしないと身につかないよ
出力するところにその条件を書けばよい
自分でデバッグしないと身につかないよ
671デフォルトの名無しさん (ワッチョイ 2f7b-MJT7)
2020/04/24(金) 05:31:04.69ID:ahZInywh0 >>668
「ライブラリとして libregex.a も使うのでリンクしてくれ」と教えるために
-lregex と書かなきゃいけないんじゃないかな。
> gcc -I "..." -L "..." filename.c -lregex
ってな感じ。
「ライブラリとして libregex.a も使うのでリンクしてくれ」と教えるために
-lregex と書かなきゃいけないんじゃないかな。
> gcc -I "..." -L "..." filename.c -lregex
ってな感じ。
672デフォルトの名無しさん (ワントンキン MMac-3xit)
2020/04/24(金) 09:34:34.44ID:N82Nh9jxM これはゾンビですか?
いいえC言語です。
いいえC言語です。
673デフォルトの名無しさん (ワッチョイ 1caf-808h)
2020/04/24(金) 10:36:16.91ID:onlsKD/x0 >>671
C:\clang>gcc -I "C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\opt\include" -L "C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\opt\lib" filename.c -lregex
コンパイルと実行ができました。
c言語の勉強を始めて間がないので、かなり困っていました。
先へ進めることができます、ありがとう。
C:\clang>gcc -I "C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\opt\include" -L "C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\opt\lib" filename.c -lregex
コンパイルと実行ができました。
c言語の勉強を始めて間がないので、かなり困っていました。
先へ進めることができます、ありがとう。
674デフォルトの名無しさん (ワッチョイ 7001-PxOI)
2020/04/24(金) 19:43:54.74ID:xndEmFws0 C言語はゾンビですか?
675デフォルトの名無しさん (ワッチョイ 02f8-8pil)
2020/04/25(土) 02:36:17.81ID:hi7DiOZ50 どの言語かなんて聞いとらん。
お前のpushでゾンビプロセスになったんだ。速く直せ
お前のpushでゾンビプロセスになったんだ。速く直せ
676デフォルトの名無しさん (ワッチョイ 0f79-QpYc)
2020/04/25(土) 04:50:47.91ID:jHPUydMa0 Cプログラムはゾンビプロセス化しやすい
677デフォルトの名無しさん (ワッチョイ f64f-1Gce)
2020/04/25(土) 20:26:18.80ID:CZd/Jkgq0 ゾンビプロセスって親のせいだろ
678デフォルトの名無しさん (ワントンキン MMb8-A1EL)
2020/04/25(土) 21:24:06.12ID:r8bOCmclM OSのプロセス管理による
C言語固有の問題ではない
C言語固有の問題ではない
679デフォルトの名無しさん (ワッチョイ c6c5-QpYc)
2020/04/26(日) 03:01:35.30ID:WTnD7Qwo0 2chのread.cgiがGitHubに公開されてた
https://github.com/nekoruri/readcgi/blob/master/read.c
https://github.com/nekoruri/readcgi/blob/master/read.c
680デフォルトの名無しさん (ワッチョイ e2ad-1Gce)
2020/04/27(月) 22:31:53.92ID:0bO6Thr30 ( ´_ゝ`)フーン
681デフォルトの名無しさん (ワッチョイ 731e-RQtm)
2020/04/28(火) 14:09:05.23ID:wJiWpF7n0 くっそ初歩的な質問なんですが、コンパイラ入れてパスも通したのにハローワールドさえ実行できなくなりました
何がいけないのかな?
https://dotup.org/uploda/dotup.org2128201.jpg
何がいけないのかな?
https://dotup.org/uploda/dotup.org2128201.jpg
682デフォルトの名無しさん (ワッチョイ ac63-w7gE)
2020/04/28(火) 14:26:07.89ID:LE+4zw960 >>681
ファイルが見つかりません
ファイルが見つかりません
683デフォルトの名無しさん (ワッチョイ ba63-1Gce)
2020/04/28(火) 14:30:52.61ID:vhevaFWy0 >?o: Invalid argument
oの前にあるの、半角ハイフォンじゃないのでは?
oの前にあるの、半角ハイフォンじゃないのでは?
684デフォルトの名無しさん (ワンミングク MM3e-RQtm)
2020/04/28(火) 14:40:19.14ID:xVP5Xe0nM685デフォルトの名無しさん (ワントンキン MM1a-3xit)
2020/04/28(火) 14:45:10.07ID:E3zbKYWLM >>684
状況を貼れ。
状況を貼れ。
686デフォルトの名無しさん (ワッチョイ d0d2-1Gce)
2020/04/28(火) 15:03:51.84ID:l2FqJJrF0 全角文字のパス未対応だったとか、"しゅもく"に\コード含んでたとか。
C:\prg とか作ってそっちで試したら?
C:\prg とか作ってそっちで試したら?
687デフォルトの名無しさん (ワッチョイ ba63-1Gce)
2020/04/28(火) 15:10:26.53ID:vhevaFWy0 試しに gcc helloworld.c ってやってみて
a.exeは出来ますか?
a.exeは出来ますか?
688デフォルトの名無しさん (ワンミングク MM3e-RQtm)
2020/04/28(火) 16:01:15.79ID:xVP5Xe0nM689デフォルトの名無しさん (ワンミングク MM3e-RQtm)
2020/04/28(火) 16:01:29.54ID:xVP5Xe0nM 他の皆さんもお力添え感謝です
690デフォルトの名無しさん (ワッチョイ ac63-w7gE)
2020/04/28(火) 16:28:06.87ID:LE+4zw960 何が原因だったのか解明できていないのは非常にもやもやする
まぁ初心者の頃はそんなのに付き合わずとりあえずいろいろやれ、っていうのもあるけどやっぱもやもやする
まぁ初心者の頃はそんなのに付き合わずとりあえずいろいろやれ、っていうのもあるけどやっぱもやもやする
691デフォルトの名無しさん (ワッチョイ be81-1Gce)
2020/04/28(火) 16:30:56.64ID:PSHN1orM0 タイポでしょ
692デフォルトの名無しさん (ワッチョイ c6c5-QpYc)
2020/04/28(火) 16:38:05.42ID:0ndGBSxH0 ハイフンが全角だったんじゃないの
693デフォルトの名無しさん (ワッチョイ 0a46-3xit)
2020/04/28(火) 16:40:48.16ID:15/yEbjR0 asが無ーて言われたんだから、インストール変なんじゃ無いの。
694デフォルトの名無しさん (ワッチョイ 7a4b-Ugou)
2020/04/28(火) 17:34:18.80ID:yXtY+D7s0 なる
695デフォルトの名無しさん (アウアウエー Sa6a-WAKu)
2020/04/28(火) 18:07:23.24ID:e3702+yfa モヤモヤする…
?o となっているから、?の部分が文字化けのようでもあり
コマンドラインの o の前のハイフンがそれっぽくないようにも見えるし
?o となっているから、?の部分が文字化けのようでもあり
コマンドラインの o の前のハイフンがそれっぽくないようにも見えるし
696デフォルトの名無しさん (ワッチョイ 0a46-w3bp)
2020/04/28(火) 18:56:53.29ID:15/yEbjR0697デフォルトの名無しさん (アウアウエー Sa6a-WAKu)
2020/04/28(火) 19:01:58.68ID:e3702+yfa698デフォルトの名無しさん (ワッチョイ baa5-WHvH)
2020/04/28(火) 20:05:39.72ID:8JlwwrXC0 普通のハイフンに見える別文字だろう
どっかのサイトでコードとコマンドを丸々コピペ、
そのコピペしたコマンドに何故かノンブレーキングハイフンとかが含まれていた、あたり
どっかのサイトでコードとコマンドを丸々コピペ、
そのコピペしたコマンドに何故かノンブレーキングハイフンとかが含まれていた、あたり
699デフォルトの名無しさん (ワッチョイ bf1f-h83k)
2020/04/29(水) 04:32:11.62ID:5pVwrDle0 プリミティブ型が解放されるタイミングはいつですか?
例えば
int a = 0;
a = 1;
のコードでaのメモリは上書きされるのか別の場所に確保されるのか
それらは参照が切れるまでかまたはプログラムの終了かまで解放されないのか?
また、
for(int i = 0; 10 > i; i++)
だとiは10回確保されるのかもしくは1週ごとに上書きされて制御を抜けると解放されるのか?
お願いします
例えば
int a = 0;
a = 1;
のコードでaのメモリは上書きされるのか別の場所に確保されるのか
それらは参照が切れるまでかまたはプログラムの終了かまで解放されないのか?
また、
for(int i = 0; 10 > i; i++)
だとiは10回確保されるのかもしくは1週ごとに上書きされて制御を抜けると解放されるのか?
お願いします
>>699
>プリミティブ型が解放されるタイミングはいつですか?
>例えば
>int a = 0;
>a = 1;
>のコードでaのメモリは上書きされるのか別の場所に確保されるのか
プリミティブ型・構造体・共用体にかかわらず、static, extern をつけない auto 変数は、
その変数が定義されたスコープ { } から抜けると「解放される」ことになります
auto 変数はスタックに確保されるのが普通です、この場合は解放という言葉はちょっと意味が違ってきます
>for(int i = 0; 10 > i; i++)
>だとiは10回確保されるのかもしくは1週ごとに上書きされて制御を抜けると解放されるのか?
for() 文から抜けると i はスタックから外れます
>プリミティブ型が解放されるタイミングはいつですか?
>例えば
>int a = 0;
>a = 1;
>のコードでaのメモリは上書きされるのか別の場所に確保されるのか
プリミティブ型・構造体・共用体にかかわらず、static, extern をつけない auto 変数は、
その変数が定義されたスコープ { } から抜けると「解放される」ことになります
auto 変数はスタックに確保されるのが普通です、この場合は解放という言葉はちょっと意味が違ってきます
>for(int i = 0; 10 > i; i++)
>だとiは10回確保されるのかもしくは1週ごとに上書きされて制御を抜けると解放されるのか?
for() 文から抜けると i はスタックから外れます
701デフォルトの名無しさん (ワッチョイ 07b3-wl64)
2020/04/29(水) 05:43:54.19ID:6z2jvBCe0 スタックが普通でもないけど
702デフォルトの名無しさん (ワッチョイ e77b-kZrw)
2020/04/29(水) 06:35:41.63ID:8simRhZl0 for (int i = 0; 10 > i; i++) {
/* i==0 から i==9 まで i はずっと同じ i */
int n = 0; /* 「i==0 のときの n」と「i==1 のときの n」は別物 */
...
/* n は「}の直前」で消滅 */
}
/* i は「}の直後」に消滅 */
こんな感じだったかね。
確保・解放と言うより、名前の同一性かも知れんけど。
/* i==0 から i==9 まで i はずっと同じ i */
int n = 0; /* 「i==0 のときの n」と「i==1 のときの n」は別物 */
...
/* n は「}の直前」で消滅 */
}
/* i は「}の直後」に消滅 */
こんな感じだったかね。
確保・解放と言うより、名前の同一性かも知れんけど。
703デフォルトの名無しさん (ワッチョイ df0e-ts7H)
2020/04/29(水) 07:34:06.20ID:kGpdE2MD0 今どきのコンパイラだとregister指定がないauto変数でもレジスタになってることがよくあるから
メモリを確保・解放しているとは限らないけど、そんな下らないことは考えなくても
変数の存在期間がスコープに合わせて階層的になっていることは
スタックを使って実現しているであろうと想像するのが最も無理がない
昔のメインフレームみたいな、ひねくれた実装で考えたいやつは勝手にしろってやつ
メモリを確保・解放しているとは限らないけど、そんな下らないことは考えなくても
変数の存在期間がスコープに合わせて階層的になっていることは
スタックを使って実現しているであろうと想像するのが最も無理がない
昔のメインフレームみたいな、ひねくれた実装で考えたいやつは勝手にしろってやつ
704デフォルトの名無しさん (ワッチョイ 07b3-wl64)
2020/04/29(水) 08:17:54.33ID:6z2jvBCe0 何を使って実現してるとか考える必要はないと思うけど
コストだけ知ってれば
コストだけ知ってれば
705デフォルトの名無しさん (ワッチョイ df0e-ts7H)
2020/04/29(水) 08:59:54.99ID:kGpdE2MD0 いきなり何nsとだけ言われても
そこから応用が全く利かないだろうが
そこから応用が全く利かないだろうが
706デフォルトの名無しさん (ワッチョイ a7f9-h83k)
2020/04/29(水) 09:07:16.86ID:skx4o1Ma0707デフォルトの名無しさん (ワッチョイ df12-PmSV)
2020/04/29(水) 09:45:29.84ID:504Vu0b/0 流石に釣りだろ
毎回確保してたらなんでforループが回るんだよ
javaのintegerオブジェクトみたいな話ならわかるがメモリそのまま使ってんだからさ
毎回確保してたらなんでforループが回るんだよ
javaのintegerオブジェクトみたいな話ならわかるがメモリそのまま使ってんだからさ
708デフォルトの名無しさん (ワッチョイ df60-ts7H)
2020/04/29(水) 09:54:13.18ID:U7o9KgzC0 >>706
ISO C 規格より引用。
> ... There are four kinds of scopes: function, file, block, and function prototype. ...
同じく:
> A block allows a set of declarations and statements to be grouped into one syntactic unit.
少なくともCではそんな区別は無いね。
ISO C 規格より引用。
> ... There are four kinds of scopes: function, file, block, and function prototype. ...
同じく:
> A block allows a set of declarations and statements to be grouped into one syntactic unit.
少なくともCではそんな区別は無いね。
709デフォルトの名無しさん (ワッチョイ a7f9-h83k)
2020/04/29(水) 14:26:19.40ID:skx4o1Ma0710デフォルトの名無しさん (ワッチョイ e710-7QW2)
2020/04/29(水) 15:34:59.85ID:9HSaf6AX0 関係ないが、iが10個確保されるという考え方は面白いな
ループを再帰で書いたような感じか
ループを再帰で書いたような感じか
711デフォルトの名無しさん (ワッチョイ e7ca-Rrpt)
2020/04/29(水) 15:52:26.64ID:p4QkWxoM0 アセンブラをちょっとやるとそこら辺の迷いも無くなるしポインタが何なのかってこともよく分かるんだが、
いかんせん最近のPCは規模が大きすぎてアセンブラでちょっと何かやるのには適さないからなぁ
いかんせん最近のPCは規模が大きすぎてアセンブラでちょっと何かやるのには適さないからなぁ
712デフォルトの名無しさん (ワッチョイ 7f46-rZIF)
2020/04/29(水) 15:58:07.06ID:19JAw+bw0 代入の度に左辺変数が新規作成される言語無かったっけ。Python?
713デフォルトの名無しさん (ドコグロ MM9f-kuXe)
2020/04/29(水) 15:59:47.38ID:ERu+PHi5M714デフォルトの名無しさん (ワッチョイ a7e6-9ss0)
2020/04/29(水) 16:41:13.25ID:CC6TnmVU0 昔はアドレスレジスタとデータレジスタで簡単に説明できたし、コンパイルして「ほらね」と言う説明もできた
今はその辺が難しい
今はその辺が難しい
715デフォルトの名無しさん (ワッチョイ 7f69-mIzA)
2020/04/29(水) 17:38:44.58ID:AWau/KJM0 どう実装されるかは最適化含めて色々あるからなんとなくこんなもん程度で
716デフォルトの名無しさん (ワッチョイ 07b3-wl64)
2020/04/29(水) 17:43:06.84ID:6z2jvBCe0 >>710
OpenMPやSIMDによる並列化を使えば10個くらい同時に出来る
OpenMPやSIMDによる並列化を使えば10個くらい同時に出来る
717デフォルトの名無しさん (ワッチョイ a7f9-h83k)
2020/04/29(水) 18:21:25.20ID:skx4o1Ma0 >>713
>708の引用がそれを否定してるようにも読めない
>708の引用がそれを否定してるようにも読めない
718デフォルトの名無しさん (ワッチョイ df60-ts7H)
2020/04/29(水) 18:55:17.87ID:U7o9KgzC0 >>717
引用足しとくね。
> A compound statement is a block.
...
> A selection statement is a block whose scope is a strict subset of the scope of its enclosing block. ...
...
> An iteration statement is a block whose scope is a strict subset of the scope of its enclosing block. ...
こんな感じで、ソースコード上の文に対応する概念でスコープ(静的・ソースコード上のこと)を
成すものの一種であるから、これが「動的・実行時のこと」というようなことはありえない。
引用足しとくね。
> A compound statement is a block.
...
> A selection statement is a block whose scope is a strict subset of the scope of its enclosing block. ...
...
> An iteration statement is a block whose scope is a strict subset of the scope of its enclosing block. ...
こんな感じで、ソースコード上の文に対応する概念でスコープ(静的・ソースコード上のこと)を
成すものの一種であるから、これが「動的・実行時のこと」というようなことはありえない。
719デフォルトの名無しさん (ドコグロ MMeb-kuXe)
2020/04/29(水) 18:55:54.46ID:aNqmXzgwM >>717
そりゃアホな内容をいちいち否定してたらキリないからな
そりゃアホな内容をいちいち否定してたらキリないからな
720デフォルトの名無しさん (ワッチョイ a7f9-h83k)
2020/04/29(水) 21:14:04.28ID:skx4o1Ma0721蟻人間 ◆T6xkBnTXz7B0 (スフッ Sdff-wyJ8)
2020/04/29(水) 21:22:07.90ID:EqfxCPAQd 自動変数はレジスタ割り当てにより記憶領域が再利用されることかある訳だし、最適化で変数自体が消える可能性もあり得る。
722デフォルトの名無しさん (ワッチョイ df52-dhD/)
2020/04/29(水) 23:20:52.24ID:EKyVvulT0723デフォルトの名無しさん (ワッチョイ df60-ts7H)
2020/04/29(水) 23:25:04.77ID:U7o9KgzC0 >>720
>706 で言ってるような違いは無くてどっちでも同じ意味になると理解してくれたらないいんだけど、
その言い換えを改めて推してくるとなると何か誤解がありそうな気がする。
ブロックに言い換えることで何がよくなるのか、あるいはスコープだと何がよくないのか、言える?
>706 で言ってるような違いは無くてどっちでも同じ意味になると理解してくれたらないいんだけど、
その言い換えを改めて推してくるとなると何か誤解がありそうな気がする。
ブロックに言い換えることで何がよくなるのか、あるいはスコープだと何がよくないのか、言える?
724デフォルトの名無しさん (アウアウエー Sa9f-kSwD)
2020/04/29(水) 23:58:02.35ID:uCKNv2Kba >>699
言葉遣いや着眼点と、分からないことがアンバランスだなぁ〜
言葉遣いや着眼点と、分からないことがアンバランスだなぁ〜
725720 (ワッチョイ a7f9-h83k)
2020/04/30(木) 00:42:18.37ID:hNg1W2hQ0 「スコープは名前の有効範囲で静的・ソースコード上のこと」は正しいと認めてもらえたと思っていいのかな
それを「自動変数の寿命」という動的・実行時のことに使うのが気に入らない
ファイルスコープという関係無いことも含んじゃうじゃないか
それを「自動変数の寿命」という動的・実行時のことに使うのが気に入らない
ファイルスコープという関係無いことも含んじゃうじゃないか
726デフォルトの名無しさん (ワッチョイ df60-ts7H)
2020/04/30(木) 01:17:57.08ID:WifEy9Hu0 >>725
> 「スコープは名前の有効範囲で静的・ソースコード上のこと」は正しいと認めてもらえたと思っていいのかな
それはそう。そしてその点についてブロックも変わらないと言っている。
自動変数の寿命に関する規格の言い回しはこんな感じ。
> ... its lifetime extends from ... until execution of that block ends in any way. ...
...
> ... its lifetime extends from ... until execution of the program leaves the scope of the declaration. ...
「ブロックの実行が終わったら」「プログラムの実行がスコープを出たら」などと定めている。
特に誤解の余地も無いかと。
> 「スコープは名前の有効範囲で静的・ソースコード上のこと」は正しいと認めてもらえたと思っていいのかな
それはそう。そしてその点についてブロックも変わらないと言っている。
自動変数の寿命に関する規格の言い回しはこんな感じ。
> ... its lifetime extends from ... until execution of that block ends in any way. ...
...
> ... its lifetime extends from ... until execution of the program leaves the scope of the declaration. ...
「ブロックの実行が終わったら」「プログラムの実行がスコープを出たら」などと定めている。
特に誤解の余地も無いかと。
727デフォルトの名無しさん (ドコグロ MM9f-kuXe)
2020/04/30(木) 08:18:03.97ID:1K8TO0XxM >>725
> 「スコープは名前の有効範囲で静的・ソースコード上のこと」は正しいと認めてもらえたと思っていいのかな
それに反対して奴なんていないだろ
> 動的・実行時のことなら「ブロック」というべきじゃないかな
が頓珍漢だって言われてるだけ
> 「スコープは名前の有効範囲で静的・ソースコード上のこと」は正しいと認めてもらえたと思っていいのかな
それに反対して奴なんていないだろ
> 動的・実行時のことなら「ブロック」というべきじゃないかな
が頓珍漢だって言われてるだけ
728デフォルトの名無しさん (ワッチョイ df52-dhD/)
2020/04/30(木) 08:50:53.47ID:WdGtAJJk0 >>725
局所変数(自動変数とstatic局所変数)のスコープは関数とブロックなのだから、ファイルスコープが入るからおかしいという理屈は的はずれだろう。
で、局所変数である自動変数とstatic局所変数の違いが、スコープから出たときに生存期間が終わるかどうかということなのだから、自動変換の生存期間としてスコープを出たらというのはごく自然なことだと思うぞ。
局所変数(自動変数とstatic局所変数)のスコープは関数とブロックなのだから、ファイルスコープが入るからおかしいという理屈は的はずれだろう。
で、局所変数である自動変数とstatic局所変数の違いが、スコープから出たときに生存期間が終わるかどうかということなのだから、自動変換の生存期間としてスコープを出たらというのはごく自然なことだと思うぞ。
729デフォルトの名無しさん (ワッチョイ 7fd2-ts7H)
2020/04/30(木) 12:23:16.18ID:SRUQMA9G0 蚊帳の外の住人「それ知ってなんの役に立つの?自分でコンパイラでも作るの?」
730デフォルトの名無しさん (ワッチョイ e701-h83k)
2020/04/30(木) 18:49:14.38ID:889RNOPY0 コード書くのに何処まで生きているかだけを意思しとけばいいし
731デフォルトの名無しさん (ワッチョイ 07b3-wl64)
2020/04/30(木) 18:54:36.66ID:BmbmhQuP0 デストラクタもないし
732デフォルトの名無しさん (ドコグロ MMff-kuXe)
2020/04/30(木) 20:01:49.37ID:C2m9eJq7M >>729
さすがにスコープと生存期間ぐらいは把握してなきゃコード書けんだろ
さすがにスコープと生存期間ぐらいは把握してなきゃコード書けんだろ
733デフォルトの名無しさん (ワッチョイ 07b3-wl64)
2020/04/30(木) 20:26:12.67ID:BmbmhQuP0 コードを書くための知識はある
厳密な言葉の定義が論点
厳密な言葉の定義が論点
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【前橋市】小川晶前市長とラブホテルで打ち合わせをした54歳男性職員を停職処分 今月末で依願退職するという [シャチ★]
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」★2 [ぐれ★]
- 【埼玉】「無免許で高速道路で事故」トラックの追突事故で10代男性死亡 無免許過失運転致死の疑いでトルコ国籍の男(22)逮捕 戸田市 [ぐれ★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★6 [七波羅探題★]
- レーダー照射問題で日本のホットライン呼びかけに中国応じず…2023年3月に開設も機能せず [♪♪♪★]
- 広島・廿日市、おこめ券配布せず 全市民に3000円現金給付へ [どどん★]
- ??「税金の必要性について書け」中学生「はい…」 [696684471]
- 中国、防衛費対GDP比1.6%です、GDPを30倍増やしたので防衛費も30倍になりました。経済成長こそ国防です [819729701]
- 【動画】鈴木農水大臣の恥ずかしい動画が発掘される [834922174]
- 最近バカほど炎上したvtuber、青森の地震に「にんげんはよわい」←ツイ消し
- 【速報】1ポンド210円で日英GDP逆転(残り1.5円)...世界6位の経済規模に転落 [237216734]
- 【実況】博衣こよりのえちえちチーズケーキを仕込み(雑談あり)🧪★2
