難しいところなんかない
ポインタの絡んだ宣言が、最初はわかりにくいかもしれん。
ポインタの概念自体が難しいってより、
複雑なデータ構造とか、デバッグとか、そっちじゃないかね
「int型」のポインタ変数p って覚えるからごっちゃになるらしい。
「int型のポインタ変数」p って覚えれば割とすんなり覚える。
だから教えるときは int *p; より int* p; で教えてる。
まぁ、そういう考え方もあるのか〜、と。
intとintポインターは別物
誤りはなさそうだが、
ポインタ初学者向けの記事だとしたらひどい内容だな。
そもそも、ポインタを理解できてない香具師に限ってアドレスを持ち出したがる傾向がある。
そうか? ってか、実生活ではポインタわからんなんて奴はいないな。
じーっと黙ってるだけなで、向かいの居乳のIさんは、ポインタをおそる
おそるナデナデしてんのか?
Yeah, I'm speaking Japanese now, huh?
>じーっと黙ってるだけなで
okey, drop "な"
ポインタ脳特有の同化現象だな
概念がわかっても表現方法が糞なせいでつまづく。
ポインタ=(アドレス保持,型情報)
Cならアドレスに毛がは得たものだと思っておけばいいが
C++だと配列newとか仮想関数とかあるからな…
ヌルポインタの内部表現は 0とは限らないから
「構造体をmemsetで初期化してはいけない」という話がこのスレにある
だが実際はそんな特殊な環境はめったに無く、人事だろうと思ってたんだ
ところがどっこい、身近な環境でそのような例を作れることに気づいてしまった
以下のコードを実行すると、大抵の環境で2回目のassertに失敗する
手元の x86の VC7.1と gcc 3.4で確認したぜ
#include <assert.h>
#include <string.h>
int main()
{
struct A;
struct { int A::*p; } hoge = {0};
assert(!hoge.p); // こちらはOK
memset(&hoge, 0, sizeof(hoge));
assert(!hoge.p); // This assertion fails
}
958 :
デフォルトの名無しさん:2008/07/05(土) 15:26:03
age
メンバへのポインタのNULL表現か
これは興味深い
struct A { int n; }; なら&A::nは0になるから、
0をNULLに使えないというわけか。
gcc 3.4で実験
#include <stdio.h>
struct A {
char elem1;
char buf1[0x7FFFFFFF];
char buf2[0x7FFFFFFE];
char elem2;
char elem3;
char elem4;
};
union UP { char A::*p; size_t n; };
void test(const UP &x) { printf(" nval=%08x, is_null=%d\n", x.n, (x.p==0)); }
int main()
{
UP hoge;
printf("sizeof UP=%u\n", sizeof(UP));
hoge.p=0; test(hoge);
hoge.p=&A::elem1; test(hoge);
hoge.p=&A::elem2; test(hoge);
hoge.p=&A::elem3; test(hoge);
hoge.p=&A::elem4; test(hoge);
}
結果
sizeof UP=4
nval=ffffffff, is_null=1
nval=00000000, is_null=0
nval=fffffffe, is_null=0
nval=ffffffff, is_null=1
nval=00000000, is_null=0
エラーチェック無しの gcc 君でした
963 :
マイク ◆yrBrqfF1Ew :2008/07/19(土) 07:12:13
アセンブリ言語をやるとポインタを理解しやすいって書いてあるのを
昔web検索してたらどこかのサイトで見た。
964 :
デフォルトの名無しさん:2008/07/19(土) 08:16:59
頭で理解しようとするから
プログラムは使用ー>理解が原則
日本語でOK
ポインタが理解できないのは頭で理解しようとするから。
プログラムは使用することで理解する、体験学習が原則。
自然と覚える揉んだと思う
小学校でいうなら台形の公式くらいだろ
台形の公式なんて聞いた瞬間に覚える種類のもんで、理解するようなもんじゃないだろ。
上下逆さまにしたやつを横にくっつけると平行四辺形になり
その面積は 底辺×高さ=(台形の上底+台形の下底)×高さ だから
その半分で (上底+下底)×高さ÷2 と習うんだよ
>>968は小学校からろくに勉強してない池沼
は? 対角線を引いて、上底からの三角形と下底からの三角形の面積の和でいいじゃん。
なんで平行四辺形なんて持ち出す必要あるんだ?
補助線引くだけで難易度が上がるからな
その三角形の面積は、平行四辺形の÷2じゃね
>971
それだと
(上底×高さ÷2)+(下底×高さ÷2)
という式になるだろ
この式を(変数が入ったまま)まとめるのは面積の計算を習う時点では不可能
正しい結果が出るならどっちでもいいと思っている俺こそが真のプログラマ。
そういうのの下についた奴は本当に不幸だな
>>971>>974 そうやっても面積は求められるねというようなことも
教科書には書いてあった気がする、公式には969で出したけど。
>>974 なんでだ?面積習う前に、結合法則も分配法則も習ってないのか?
979 :
デフォルトの名無しさん:2008/07/26(土) 12:05:12
int pupi = 5;
int papu = 10;
int *poin = &pupi;
*poin = &papu;//なんでエラーが出るんだよ!
*いらないから。
&いらないから。
int の *poin というよりは int* の poin だからな。初心者が疑問に思うのもわからんでもない。
いっそ static みたいに記述できれば混乱もないだろうに。
pointer int poin; みたいな。
poin = &papu;か*poin = papu;
984 :
デフォルトの名無しさん:2008/07/27(日) 17:28:32
985 :
デフォルトの名無しさん:2008/07/27(日) 17:56:07
,..-─‐-..、
/.: : : : : : : .ヽ
R: : : :. : pq: :i}
|:.i} : : : :_{: :.レ′
ノr┴-<」: :j|
/:r仁ニ= ノ:.ノ|! _
/:/ = /: :/ }! |〕) 何だって?
{;ハ__,イ: :f | /´
/ }rヘ ├--r─y/
/ r'‐-| ├-┴〆 _, 、_ '⌒ ☆
仁二ニ_‐-イ | | ∩`ω´)
| l i 厂  ̄ニニ¬ ノ ⊂ノ <<980-981
,ゝ、 \ \ __厂`ヽ (__ ̄) )
/ /\_i⌒ト、_ ノrr- } し'し′
└-' ̄. | |_二二._」」__ノ
986 :
デフォルトの名無しさん:2008/07/27(日) 17:57:56
987 :
デフォルトの名無しさん:
中国人の平均所得は低いけど、銀座には富裕層の中国人がうろうろしていて
日本の経済に影響を与えているだろ
平均やら統計やらだと実態を返って見失う好例
話が飛んでるけど、そもそも平均だけで判断しようっていうのが間違い。
平均だけ見たらあくまで平均が分かるだけで、富裕層の人数とかなんて判断できない。
平均だけを見て「統計」とかほざくな。分散とか標準偏差を高校の教科書で見てごらん。
ちゃんと統計結果を総合的に分析すれば実態を見失わないから。
煽りじゃなく忠告。
なんかお前って考えが表面的。
公式を覚えても意味がない。
本質を、根幹を見るようにしたほうがいい。