忍者ブログ
どんでもいいごとだ
 253   252   251   250   249   248   247   246   245   244   243 
04  * 05/ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31   *  06
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

多いねー。

このコトバが無考えでメディアに出る頻度。

カタカナ英語の方が通用するコトバが多々ある。
そして、日本語にするよりも皮肉った感じがするコトバもある。
オレが過去ページで使っているカタカナ英語はそんなものばかりだと思っている。

カニの中身よりも、コンテンツを選んだ。
達成感や満足感よりも、ストロークを選んだ。

あとは、常識的に選択しているつもり。


最近、この業界の技術的なことはさっぱりしていない。
今朝方、ネットワークの調子が悪かったので、暇そうな窓口担当のMとその辺の若いやつらに問題を出してみた。


ポインタと配列の違いを述べよ

どいつもこいつも及第点に達しない。

かといって、そんなにガッカリはしていない。

なぜなら、今の出先にいる人間で明瞭簡潔に回答できる人間の方が少ないと思うから。

非常にアホらしいことながら、現実。

構文よりもアルゴル、要するに、設計及び実装能力がより重要という声も理解できる。

しかし、世の中のソースコードの8割が流用であることを知っての発言だろうかと疑問を持つ。

流用が多いということは、保守メンテ能力の高さが問われることになる。
自然、俯瞰的な視座能力が問われる。

保守プロジェクトのアドバンテージであろう。

閑話休題。

10年生でも回答できなかった、ポインタと配列の違い。
なぜ、疑問に思ってなぜ調べないのかとは思ったが、そんな余裕は無いのであろう。
しかし、窓口のM村は暇だらけ。
言われたことしかやんねー男。
逆に言うと、言われたことしかやんねーから下の者にとって口うるさくないから仕事のやりやすい男。
# 一生は付いていけないので、コンビニエンス男と言えよう


問題だが、下記のコードを実行したら一目瞭然ではなかろうか。
これで質問やら意見が一切来なかったので、理解できていないと思っている。

unsigned char *p = "012345";
unsigned char b[ 8 ] = "012345";

b[ 3 ] = '0';
*( p + 3 ) = '0';


最初、なぜわからんかの不思議に思ったが、自分で疑問に思って自分で調査して自分で勉強して自分のモノにしないとわからん類ということで納得することにした。


やっぱちょいがっかり。


☆ 22:41
PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
管理人のみ閲覧可能にする    
 
pointer
もちろん、酒のみながら書いたので、そもそもコンパイルが通るような構文か?とも思ったのですが、大丈夫そうですね。(^_^;)

概ね、masutakaさんと3日でさんの言うとおりと理解しています。
ただ、配列をポインタのごとく扱い可能な表現方法には、気をつけて欲しいところ。特にルーキーは。
配列は引数にすると、ポインタに成り下がる(?この辺の表現は御容赦)ので注意して欲しい。

自分があげた例で勉強して欲しかったのは、

>ポインタと配列の違いは、単に領域が保証されているかだ

です。

ポインタは名の通り、ポイント先を格納するエリアに過ぎない。上記例だと ROM 領域を参照することになるので、メモリセグメントを踏み外すことになる。(SIGSEGV)
配列は予めエリアを確保してあり、そこにROM領域の *中身を格納する* ので、セーフ。

いずれも、SPARC + gcc(最新?)で確認。
b[ 3 ]
*( p + 3 )
について、もっと厳密に違いを言いたいが、あとに譲らせてください。
jimmy 2008/05/24(Sat)07:03 編集
もう一人の10年目より
すんません。書き途中で送ってしまいました。

bは宣言された場所によって確保される領域が違う。
pは常にどっかの領域。コンパイラ次第?

こんな回答をここに載せてよいのか。。。
3日で 2008/05/24(Sat)01:27 編集
無題
昼ポンと聞かれて、やっぱりアドレスと実体程度にしか答えられなかったっす。
二番煎じですが、
例を見るとpはどっかの領域。

ある大学のページに以下と書かれていました。
最初はわかりますが後のはそうなんだけど、
なんか結果の話な気がします。

* 確保されたメモリが違う
* sizeof の結果が違う
* 配列のアドレスは配列と同じ (a == &a)
* 関数に渡すと区別が分からなくなる
3日で 2008/05/24(Sat)01:16 編集
C
b[ 3 ] = '0'; と *(b + 3) = '0' は同じですよね。昔本屋で立ち読みした
C言語の本にも書いてあったのですが、3[ b ] = '0'; も同じそうです。

ポインタと配列の違いは、単に領域が保証されているかだけだと理解していま
すが、何か思い違いしているのかな?(;´Д`)ドキドキ

例で言うと、p はどっかにある "012345" のアドレスを知っているが、b には
"012345" そのものが格納されている。

@9年目より
masutaka 2008/05/23(Fri)23:38 編集
この記事へのトラックバック
この記事にトラックバックする:
<< 骨折り損     HOME    はとこ >>
カレンダー
04 2025/05 06
S M T W T F S
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
リンク
カテゴリー
最新CM
[01/11 さっちあぶぎぃ]
最新記事
(03/21)
(09/14)
(09/08)
(09/08)
(09/07)
sad
(04/14)
(03/14)
(02/17)
(02/17)
(11/11)
(11/11)
最新TB
プロフィール
HN:
beck
年齢:
28
性別:
男性
誕生日:
1996/09/19
職業:
嫁のヘソクリでなんとか
趣味:
猪突猛進直情吐露
自己紹介:
1、押し
2、金
3、漢

これだろ
バーコード
ブログ内検索
アーカイブ
フリーエリア2
アクセス解析
powered by NINJA TOOLS // appeal: 忍者ブログ / [PR]

template by ゆきぱんだ  //  Copyright: あんずますぅ All Rights Reserved