java - c/c++ 指针指向 数组和数据类型 判断时会不会有二义性?
天蓬老师
天蓬老师 2017-04-18 10:53:58
0
2
782
int dd=1;
int *a=ⅆ    // 1
int *c=new int[2];  //2

这里1说明a是int 类型的指针,2说明c是int数组类型的指针.对不?

这段数据结构代码

两个理解:
1.rowlist是个动态数组指向一大块内存,数组里的元素存储着指向LinkList<int>链表的地址。即rowlist是指针数组。如图一

2.rowlist指向一个内存,这个内存存储着<LinkList< int > * >类型的指针,即rowlist是指针的指针。如图二

感觉两个都可以,是要看具体实现吗。比如rowlist=new ...是采用第一种?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全員に返信(2)
伊谢尔伦

リーリー

対象者はこう言いました:

ここで、1はaがint型のポインタであることを示し、2はcがint型配列のポインタであることを示していますよね?

そうではありません。a と c は実際には同じもので、int へのポインターです。 c は「int 配列型のポインタ」ではありません。

なぜ c は元々 int ポインタであるのに、実際には int 配列を指すことができるのでしょうか? int 配列が int ポインタに代入されると、C 言語はそれ (int 配列) を int 配列の最初の要素にこっそり変換するため、この「こっそり変換」を専門用語では「暗黙的変換」と呼びます。

要約すると:

  1. 変数 c は int 配列型のポインタではなく、int 型のポインタです。

  2. それでは、なぜ変数 c が int 配列を指すことができるのでしょうか?それは暗黙的な変換があるためです。

いいねを押す +0
洪涛

リーリー

c は int へのポインタです。配列へのポインタは

として記述する必要があります リーリー

ポインタ+1は何バイト移動しますか?試してみてください。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート