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

 mobiledu2502871951 发布于 2022-10-25 07:52
int dd=1;
int *a=ⅆ    // 1
int *c=new int[2];  //2

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

这段数据结构代码

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

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

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

2 个回答
  • int *c=new int[2];  //2

    c就是指向int的指针。指向数组的指针应该写成

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

    指针+1 会走几个字节呢?试一试。

    2022-10-26 14:28 回答
  • int dd=1;
    int *a=ⅆ    // 1
    int *c=new int[2];  //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数组呢,是因为其中发生了隐式转换;

    2022-10-26 14:28 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有