cari

Rumah  >  Soal Jawab  >  teks badan

java - c/c++ 指针指向 数组和数据类型 判断时会不会有二义性?

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 ...是采用第一种?

天蓬老师天蓬老师2768 hari yang lalu773

membalas semua(2)saya akan balas

  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:55:58

    int dd=1;
    int *a=&dd;    // 1
    int *c=new int[2];  //2

    Subjek berkata:

    Di sini 1 menunjukkan bahawa a ialah penunjuk jenis int, dan 2 menunjukkan bahawa c ialah penunjuk jenis int tatasusunan Betul?

    Bukan begitu, a dan c sebenarnya adalah perkara yang sama, ia adalah penunjuk kepada int. c bukan "penunjuk jenis int array".

    Mengapa c pada asalnya penunjuk int, tetapi ia sebenarnya boleh menunjuk kepada tatasusunan int? Kerana apabila tatasusunan int diberikan kepada penuding int, bahasa C menukarnya secara rahsia (tatasusunan int) kepada elemen pertama tatasusunan int Istilah profesional untuk "penukaran curi" ini dipanggil "penukaran tersirat".

    Jadi untuk meringkaskan:

    1. Pembolehubah c bukan penunjuk jenis tatasusunan int, tetapi penunjuk jenis int;

    2. Kalau begitu, mengapa pembolehubah c boleh menunjuk ke tatasusunan int? Ini kerana terdapat penukaran tersirat
    3. balas
      0
  • PHP中文网

    PHP中文网2017-04-18 10:55:58

    int *c=new int[2];  //2

    c ialah penunjuk kepada int. Penunjuk kepada tatasusunan hendaklah ditulis sebagai

    int (*c)[2]=new int[2];

    Berapa banyak bait yang akan digerakkan oleh penuding +1? Cubalah.

    balas
    0
  • Batalbalas