创建指向picPtr类型链表数组指定位置的指针,写法是否正确?
问题解答
首先明确核心类型关系:
picPtr是struct picture*的别名- 函数参数
arr[]是picPtr类型的数组,在函数中会退化为指向picPtr的指针(即picPtr*,等价于struct picture**)
你写的代码:
picPtr* temp = (arr +id);
从语法层面看类型是匹配的——arr + id 计算后确实是picPtr*类型(指向数组第id个picPtr元素的指针),但这和你的需求完全不匹配:
你的需求是获取数组指定位置的链表头指针(也就是数组第id个元素本身,它是picPtr类型的链表头),但这段代码得到的是指向该链表头指针的二级指针。
如果要实现你的需求,正确写法应该是:
// 直接拿到数组第id个位置的链表头指针 picPtr temp = arr[id]; // 或者等价的指针偏移写法 picPtr temp = *(arr + id);
考试被扣分大概率是因为你误解了需求的指针层级:你声明了二级指针,但实际需要的是一级指针(链表头指针)。
内容的提问来源于stack exchange,提问作者salimski
相关产品推荐
相关产品推荐

