[過去ログ] C言語なら俺に聞け 163 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
201
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ f732-6w0d) 2024/09/16(月)18:10 ID:JwEVxA0h0(5/6) AAS
>>199
こっちは根拠になる規格の文面を提示してるんだから違うというなら違うと思う根拠を提示して。
202: (アウアウウー Sa5b-E6+g) 2024/09/16(月)18:57 ID:ISRAyNkZa(1) AAS
>>188
そらargv[][]では誤りだもんな
203
(1): (アウアウエー Sadf-N1Zj) 2024/09/16(月)21:32 ID:NNTpe0yPa(1) AAS
>>187
たしかに関数の引数だと違うんだな
外部リンク:ideone.com
#include <stdio.h>

char *hoge(char fuga[10])
{
++fuga;
return fuga;
}

int main(void) {
char hage[10] = {0};
char *p = hoge(hage);
printf("%p, %p\n", hage, p);
return 0;
}

// もちろん ++hage は出来ない
外部リンク:ideone.com
204: (ワッチョイ bf4f-NiVF) 2024/09/16(月)22:10 ID:hHcIxSUD0(1) AAS
>>197
流石に言ってる事が的外れ過ぎるのでもうちょっと勉強した方がいいと思うよ
205
(1): 警備員[Lv.1][新芽] (ワッチョイ f731-/vo+) 2024/09/16(月)22:25 ID:z+htC2pc0(1/2) AAS
恥ずかしながら、静的記憶域期間(で合ってるのか?)という言葉を知らなくて、ライフタイムは「静的」に含意されているのかと思ったワ…
しかし、記憶域期間って違和感あるなぁ
206: 警備員[Lv.1][新芽] (ワッチョイ f731-/vo+) 2024/09/16(月)22:30 ID:z+htC2pc0(2/2) AAS
わけわからん
>>205は撤回します
207
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ f732-vU+L) 2024/09/16(月)22:43 ID:JwEVxA0h0(6/6) AAS
>>203
余談だけど配列だけじゃなくて関数型も関数ポインタ型に調整されるよ。
208
(1): (ワッチョイ 9f7c-2MD7) 2024/09/16(月)22:52 ID:TDYyKtgo0(1) AAS
>>201
規格に配列は常にポインタに変換されるなんて書いて無いぞ。
209: 2024/09/16(月)23:00 ID:f3T7KT8T0(1) AAS
>>208
「常に」とは書かれていない
「ポインタに変換される」ではなく「ポインタに型変換される」

>>102がまさにそれでしょ
E1という配列が関数呼び出しでない場合においてもポインタという型に変換されているから出来ること
210
(1): (ワッチョイ ff63-y7MN) 2024/09/16(月)23:10 ID:yKwOC4kA0(2/2) AAS
>char *hoge(char fuga[10])

こう書いてあっても、関数内で10を使う訳ではない
関数内で仮に100個めの要素アクセスするロジック書いてもエラーにはならない
(実行時にはエラーになると思う、多分)

だから、
>char *hoge(char fuga[])
添え字無しにしても良いことになる
211: (ワッチョイ d7cd-qbvN) 2024/09/17(火)01:04 ID:BokinMog0(1) AAS
>>210
元々ローカルでchar hage[10];と定義して10以上をアクセスしてもコンパイル時にはエラーにならないでしょ

引数に[10]と書くとしたら可読性のため(この関数では[0~9]までアクセスする可能性があると明示するため)
212
(1): (スプッッ Sd3f-2MD7) 2024/09/17(火)10:15 ID:9gub94Dsd(1/3) AAS
__FILE__ とか __LINE__ は大文字なのになんで __func__ は小文字なん?
213: (アウアウエー Sadf-N1Zj) 2024/09/17(火)10:17 ID:TMGdiCOOa(1/2) AAS
範囲の問題じゃなくて
++hage または hage++ が出来るか出来ないかが問題なんです
214
(1): (ワッチョイ ff63-y7MN) 2024/09/17(火)11:06 ID:bX/ekV+z0(1/3) AAS
一見配列を受け渡ししているように見えるけれど、
実際はポインターとして受け渡ししているってことでしょ
215
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ d70f-6w0d) 2024/09/17(火)11:56 ID:FRc2ySeD0(1) AAS
>>212
__func__ はマクロではないからだと思う。
216: (ワッチョイ ff63-y7MN) 2024/09/17(火)12:47 ID:bX/ekV+z0(2/3) AAS
#include <stdio.h>

char hage[10] = {0};

char *hoge(void)
{
// ++hage; // error '++' には左辺値が必要です。
// return hage;
 return &hage[1];
}

int main(void) {
 char *p = hoge();
 printf("%p, %p\n", hage, p);
 return 0;
}
217
(1): (アウアウエー Sadf-N1Zj) 2024/09/17(火)13:07 ID:TMGdiCOOa(2/2) AAS
>>214
そんなことは判ってるよ
(char hage[10]) で hage++ または ++hage 出来ちゃってる(ように観える)のが問題なんでしょ
関数の引数は (char hage[]) または (char *hage) のみにすれば良かった
(char hage[10]) はどうみても蛇足(結局境界テストされてないし)
218: (ワッチョイ ff63-y7MN) 2024/09/17(火)13:11 ID:bX/ekV+z0(3/3) AAS
問題だと思う人は、使わないようにしましょう
開発サイトでそういうルールを用意するのも手です
219: (スプッッ Sd3f-2MD7) 2024/09/17(火)17:17 ID:9gub94Dsd(2/3) AAS
>>215
納得しました。
220: (ワッチョイ 9ffd-NiVF) 2024/09/17(火)20:17 ID:dLWvmxgr0(1) AAS
>>197
そもそもstr系mem系はアドレスを受け取るんであって配列を受け取る関数ではないっていう勘違いがあるんだけど
それはともかく大きさがどうのとかなんちゃらが都合がいいとか、本当にC言語でなんかプログラムを書いた事あるの?
221: (スプッッ Sd3f-2MD7) 2024/09/17(火)20:58 ID:9gub94Dsd(3/3) AAS
俺は尻より胸派なんだよね。
222
(8): (ワッチョイ d7cd-qbvN) 2024/09/18(水)00:42 ID:wcwImUMc0(1/3) AAS
>>217
この場合に限らずcでは範囲チェックなどされないでしょ
必要なら自分でチェックするのが原則

void aaa(char hage[10],int idx)
{
if((UINT)idx < sizeof(hage)/sizeof(hage[0]))
printf("%d=%d¥n",idx,hage[idx]);
else
printf("%dは範囲外だhage¥n",idx);
}

これなら[10]に意味が出る
223: (ワッチョイ bfee-GITO) 2024/09/18(水)01:22 ID:9DvoA/Ly0(1/2) AAS
ド素人w
224
(1): (ワッチョイ d712-IGT5) 2024/09/18(水)05:59 ID:Y3+kk9yU0(1) AAS
>>222

c faq 6.21 (英文が詳しい)
外部リンク[html]:c-faq.com
>>207 の'調整'は'adjust'だろう
N1256を'adjust'で検索するのじゃ
Look, a new day has begun.
225: (ワッチョイ d710-SKTh) 2024/09/18(水)07:51 ID:9Z5pFVfx0(1) AAS
8/16bit時代の1バイトでも、1ステップでも減らせってのを経験した人と
最近の可読性、移植性、安全性優先設計が当たり前世代とのギャップ。
226: (ワッチョイ bf32-GITO) 2024/09/18(水)08:59 ID:9DvoA/Ly0(2/2) AAS
ギャップの問題じゃねーから
文脈すら理解できないじじいはすっこんでろ
227: (ワッチョイ 5701-vU+L) 2024/09/18(水)09:30 ID:Qk7JHPx80(1) AAS
専門板によくいるアスペだな
228: (ワッチョイ ff63-y7MN) 2024/09/18(水)10:34 ID:UYQxUcxO0(1/4) AAS
225 は釣りでしょう
229: 警備員[Lv.2][新芽] (ワッチョイ bfd9-/vo+) 2024/09/18(水)13:08 ID:eTGNACyx0(1/2) AAS
>>222
sizeof(hage) で配列のサイズが求まるの?
と思ったら、「char * (ポインタ)の大きさを返すよ」みたいな警告が @gcc
230: (ワッチョイ ff63-y7MN) 2024/09/18(水)13:15 ID:UYQxUcxO0(2/4) AAS
釣りだか天然だか、分からなくなってきた 笑
1-
あと 772 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.014s