[過去ログ] C言語なら俺に聞け 162 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
100
(1): (スププ Sd7f-RFe5) 2023/11/27(月)08:24:12.52 ID:554QjvZVd(1/2) AAS
左辺値と右辺値のことがよくわからない
char *cp = "abcdefgの"abcdefg"は値を変更できないのに、
char cp[] = "abcdefg"の"abcdefg"は値を変更できる
101
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 5f3e-d+hN) 2023/11/27(月)09:01:26.52 ID:HtoHgn5y0(1) AAS
>>100
それは左辺値/右辺値とは関係ない。
「リテラルを書き換えようとしたら未定義」というルールが関与してる。

前者の場合は文字列の場所を示すアドレスが cp に格納されているので
cp が指す先というのは文字列リテラルだが
後者の場合は確保された配列を初期化子の文字列で初期化するという理屈なので
配列と文字列リテラルとは別の実体を持ち、リテラルではない配列を書き換えることは問題にならない。

初期化子として文字列が出てくるときは初期化の文法としてちょっと特例があるのと
(文字列を含む) 配列は暗黙の型変換で勝手にポインタに変換される特例があって
そういう変則的なルールの積み重ねが分かり難い要因だと思う。
省4
280: (ワッチョイ 16ab-zIzn) 2023/12/18(月)09:38:52.52 ID:RUscEa1Z0(1/3) AAS
シャローコピーの要件からすると
ポインタ変数にアドレスを代入するだけでは成立せずに
リファレンス可能なオブジェクトを指してるポインタでないとまずい気がする

char *p = (char *)0x000; /* アドレスを代入してるぞ */
401: (ワッチョイ 2214-HXAs) 2024/01/18(木)11:04:17.52 ID:0zoYvNSM0(1/2) AAS
>>392
その条件下ならない
でもpが左辺値という前提がなかったら変なコトになるコードが書けるね
560: (ワッチョイ 6763-9+AH) 2024/02/29(木)19:19:48.52 ID:z2rRJOdi0(2/2) AAS
人間が思いも付かなかったアルゴリズムで解いて見せたりして
人間が解析しても何故正しいかが分からなくなる
625: (ワッチョイ 1384-8Hbo) 2024/03/18(月)13:06:20.52 ID:mAsCIn7L0(1) AAS
依頼者の返答を待たないと
674
(1): (スッップ Sd02-3rFQ) 2024/04/12(金)12:25:07.52 ID:OadUyd3Md(1/2) AAS
C言語の標準化委員はC++のほうも兼任してたりするから、ぶっちゃけC言語の改善にはやる気無しだから。
679: (スッップ Sd02-3rFQ) 2024/04/12(金)16:33:17.52 ID:OadUyd3Md(2/2) AAS
C++は好きじゃないからC言語はもっと改善していって欲しい。
nullptr型とか入るの遅すぎじゃね?
836: (ワッチョイ d907-eTTT) 2024/05/31(金)22:26:34.52 ID:LsNESqr60(1) AAS
Cがマニュアルというのは的外れ言ってんのは知ったか野郎だろ
Javaや比較的Cに近いGoと根本的に違うのはメモリ管理だろ
Cはオブジェクト指向をサポートしてないからそれは除外するとして、それ以外の違いはメモリ管理って事
手動でするか自動(ガベージコレクション)でするかの違い
手動ですれば効率が良くなる所も同じだ
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.037s