You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用指针算术为C语言结构体内部的数组成员赋值

正确实现代码

C语言中arr[i]本质是*(arr + i)的语法糖,结构体成员访问符->是(*ptr).member的语法糖,将你原有可用的下标写法完全展开为纯指针算术的写法如下:

// 仅使用指针算术,完全不涉及[]运算符
*(( (myTable + 90)->p ) + 0) = 'a';
*(( (myTable + 90)->p ) + 1) = 'b';
*(( (myTable + 90)->p ) + 2) = 'c';
*(( (myTable + 90)->p ) + 3) = 'd';

如果连->运算符也需要替换为原始指针操作,可以写成:

*( (*(myTable + 90)).p + 0 ) = 'a';
*( (*(myTable + 90)).p + 1 ) = 'b';
*( (*(myTable + 90)).p + 2 ) = 'c';
*( (*(myTable + 90)).p + 3 ) = 'd';

原错误写法问题说明

  • 你尝试的*(myTable+90).(*(p+0))语法本身不合法:.运算符后必须跟随结构体成员名,不能直接跟解引用表达式;同时单独的p在结构体作用域外没有定义,必须先通过结构体实例拿到p数组的首地址,再做指针偏移计算。
  • (myTable+90)->(*(p+0))同理存在语法错误,->运算符后必须跟随结构体成员名,不能直接放解引用表达式。

内容的提问来源于stack exchange,提问作者Marc Nathaniel Valeros

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 03:36:08