X



C言語なら俺に聞け 156
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん (ワッチョイ 9bb7-/QqT)
垢版 |
2020/09/28(月) 14:41:30.00ID:QxfbhGyV0
!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言語なら俺に聞け 155
https://mevius.5ch.net/test/read.cgi/tech/1589120427/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
0957デフォルトの名無しさん (アウアウクー MM87-LLAs)
垢版 |
2021/06/17(木) 16:05:49.23ID:LpiEWNiEM
型はintとcharとfloatとdouble等
配列はその型を[100]みたいに指定した固定数だけ宣言して使えるようにしたもの
ポインタは指定した型のメモリ上の場所だけを指し、*allocでサイズが変えれる
配列もメモリの場所を示すポインタで参照はできるがサイズは固定

で覚えた
0958デフォルトの名無しさん (ワッチョイ 6345-XaDa)
垢版 |
2021/06/17(木) 16:13:28.27ID:qVo1n1YK0
>>955
キーワードのみで指定される型は基本型(basic type)だ

6.2.5 型 オブジェクトに格納した値又は関数の返す値の意味は,それをアクセスするのに使われる式の型(type)によって決定する。(オブジェクトとして宣言された識別子は最も単純な式とし,その型は識別子の宣言において指定された型とする。)型は,オブジェクト型(object type)(オブジェクトを完全に規定する型),関数型(function type)(関数を規定する型),及び不完全型(incomplete type)(オブジェクトを規定する型で,その大きさを確定するのに必要な情報が欠けたもの)に分類する。
0961デフォルトの名無しさん (ワッチョイ ffbb-nlE7)
垢版 |
2021/06/18(金) 14:36:30.74ID:askuiBap0
>配列型(array type)は,要素型(element type)と呼ぶ特定のメンバオブジェクト型をもつ空でないオブジェクトの集合を連続して割り付けたものを表す(36)。配列型は,その要素型及び配列の要素の個数によって特徴付ける。配列型はその要素型から派生されるといい,要素型がTの場合,配列型は“Tの配列”と呼ぶ。要素型から配列型を構成することを“配列型派生”と呼ぶ。

「Tの配列」という表現は「配列型」と同義なのか、勉強になった
0963951 (アウアウウー Sa47-QaMB)
垢版 |
2021/06/19(土) 00:09:10.43ID:zB4v1zpja
では、cには文字列型があるといえるのかな
0964デフォルトの名無しさん (ワッチョイ 9aad-19dE)
垢版 |
2021/06/19(土) 00:14:04.98ID:MQWrKSb70
関数の引数で

void func(char s[][10])

なんて書き方をすると配列型をちょっと実感できる。
0968デフォルトの名無しさん (ワッチョイ 9aad-XI4R)
垢版 |
2021/06/19(土) 05:43:30.69ID:MQWrKSb70
飛ばない豚はただの豚
0969デフォルトの名無しさん (エムゾネ FFba-b/96)
垢版 |
2021/06/19(土) 17:04:29.32ID:zDrgWeBeF
void func(char s[][10])
は嫌い
void func(char (*s)[10])
じゃいかんの
0973デフォルトの名無しさん (エムゾネ FFba-b/96)
垢版 |
2021/06/21(月) 15:18:17.55ID:os4CEfZ3F
こんなところでCが中途半端に出来るだけが自慢の専門卒みたいな連中に尋ねるよりも
大学の先生かチューターの院生に尋ねた方がいいだろう
進みたい研究室があればそこに行って訊くと良い
0975デフォルトの名無しさん (ワッチョイ b363-19dE)
垢版 |
2021/06/21(月) 23:06:35.04ID:jHz8GYW10
// b.c
int b[] = {123, 456};

// a.c
#include <stdio.h>

int a[] = {123, 456};
int main()
{
  extern int *b;
  printf("val b\n");
  printf("%d\n", *(b + 1));

// printf("val a\n");
// printf("%d\n", *(a + 1));

 return 0;
}

こういう分割ソースをコンパイル、リンクして実行すると、何も表示無しで終了する
デバッガー使って実行してみると、SEGVになってる

分割せず、コメント部分のaの表示だけにすると、動く

院生の人、何故かを説明して
0979デフォルトの名無しさん (アウアウウー Sa47-QaMB)
垢版 |
2021/06/22(火) 22:30:25.89ID:dO7B5XH7a
外部りんけーじだと、bのメモリに配置されているのが値なのかポインタなのか分からないからかな
この場合、使用側はbに配置されたのがポインタと決めつけてるけど、実態は値だから?
0980デフォルトの名無しさん (ブーイモ MMba-A4zE)
垢版 |
2021/06/23(水) 00:13:40.21ID:4uPMP2M7M
int b[] = {123, 456};
*b で期待されるのは b=&123;
b[] で期待されるのは b[2]={123,456}
b[]の中身をスタックに積んだ後に*bの場合必要ないからextern更新して無いんじゃね?
0993デフォルトの名無しさん (ワッチョイ 3fad-wfqF)
垢版 |
2021/06/26(土) 02:00:51.59ID:RjjpcdnV0
int a[] = { 123 };
って初期化すれば a が (int) 123 の入っている先頭アドレスになる。
もちろん *a が作られたわけではないので a に対しては代入できない。
あくまでも a を使おうとすると 123 の入っているアドレスに置き換わるだけ。
0995デフォルトの名無しさん (ワッチョイ 3fad-wfqF)
垢版 |
2021/06/26(土) 14:00:05.06ID:RjjpcdnV0
気分の問題。
0996デフォルトの名無しさん (ワッチョイ 0f45-Sffs)
垢版 |
2021/06/28(月) 09:33:23.09ID:so+vl3vs0
printf("%d", sizeof (char)123); とやろうとしたら
キャストのカッコがsizeofのカッコと解釈されてエラーになるのな
printf("%d", sizeof((char)123)); ならおkなんだけど
なんだか気持ち悪い
0998デフォルトの名無しさん (ワッチョイ 0fda-qjGA)
垢版 |
2021/06/28(月) 10:20:43.69ID:WejOUFlX0
>>996
sizeof演算子の優先順位はcast演算子の優先順位より高いので、括弧がないと
まず最初にsizeofと数値リテラルが評価されてその後でその結果をcastで評価するという
おかしな状態になるのでエラーになったのでは?
0999デフォルトの名無しさん (ワッチョイ 0f45-Sffs)
垢版 |
2021/06/28(月) 10:38:03.51ID:so+vl3vs0
sizeofとキャストはどちらも単項式なので右から結合するはず
にも関わらずキャストが先に読まれないので気持ち悪いと言ったんだ
字句解析と意味解析ってことかな
1000デフォルトの名無しさん (ワッチョイ 0fd2-kMi9)
垢版 |
2021/06/28(月) 11:05:48.75ID:HW6dR9O/0
そもそも
sizeof (char)
だけでいいものをそう記述してるのが気持ち悪い。
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 272日 20時間 24分 19秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

ニューススポーツなんでも実況