是否存在与((ptr + i)->marks)等价的ptr[i]形式写法?
等价实现代码
printf("%s\t%d\n", ptr[i].subject, ptr[i].marks);
原理解释
C语言中指针算术和数组下标访问逻辑完全等价:
ptr + i是指向数组中第i个元素的指针,用->操作符可以直接通过指针访问结构体成员- 换成
ptr[i]写法后,本质是对*(ptr + i)的简写,已经得到了第i个结构体实例,所以需要把指针成员访问符->替换为结构体实例成员访问符.
内容的提问来源于stack exchange,提问作者Mohamed Tawfik
相关产品推荐
相关产品推荐

