Maison  >  Questions et réponses  >  le corps du texte

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

天蓬老师天蓬老师2719 Il y a quelques jours739

répondre à tous(2)je répondrai

  • 伊谢尔伦

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

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

    Le sujet disait :

    Ici, 1 indique que a est un pointeur de type int, et 2 indique que c est un pointeur de type int array, n'est-ce pas ?

    Ce n’est pas le cas, a et c sont en fait la même chose, ce sont des pointeurs vers int. c n'est pas un "pointeur de type tableau int".

    Pourquoi c est-il à l'origine un pointeur int, mais peut-il en fait pointer vers un tableau int ? Parce que lorsqu'un tableau int est affecté à un pointeur int, le langage C le convertit secrètement (le tableau int) en premier élément du tableau int. Le terme professionnel pour cette "conversion sournoise" est appelé "conversion implicite".

    Donc pour résumer :

    1. La variable c n'est pas un pointeur de type tableau int, mais un pointeur de type int

    2. Alors pourquoi la variable c peut pointer vers le tableau int ? C'est parce qu'il y a une conversion implicite

    répondre
    0
  • PHP中文网

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

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

    c est un pointeur vers int. Un pointeur vers un tableau doit être écrit comme

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

    De combien d'octets le pointeur +1 va-t-il se déplacer ? Essayez-le.

    répondre
    0
  • Annulerrépondre