C++初心者です。
今までJava主体だったので、参照関係の知識は最低限(プリミティブかそうでないか)程度の認識しかありませんでした。
PHPも少し触っていたので参照はわかりますが、ポインタがどうも理解しきれません。

参照 = 変数のアドレス
ポインタ = 変数のアドレスの値、つまり参照の値ということでいいんでしょうか?

また、上と仮定した時、ダブルポインタが配列になる意味が納得できません。
listとか、vectorのポインタはどうなるんですか?
char **argv がcharの連想配列、
char *argv[]がchar配列の配列 = stringの配列
となるのであれば、
list *arrayは「string型リスト」の配列にはなりませんよね?
charはプリミティブだから扱いが違うという話なんでしょうか?