java - c/c++ 指针指向 数组和数据类型 判断时会不会有二义性?
天蓬老师
天蓬老师 2017-04-18 10:53:58
0
2
771
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 배열의 첫 번째 요소로 비밀리에 변환하기 때문에 이러한 "몰래 변환"을 "암시적 변환"이라고 합니다.

요약하자면:

  1. c 변수는 int 배열 유형의 포인터가 아니라 int 유형의 포인터입니다.

  2. 그렇다면 변수 c가 int 배열을 가리킬 수 있는 이유는 암시적 변환이 있기 때문입니다.
洪涛

으아아아

c는 int에 대한 포인터입니다. 배열에 대한 포인터는

으로 작성해야 합니다. 으아아아

포인터 +1은 몇 바이트만큼 움직일까요? 한번 시도해 보세요.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿