【发布时间】:2021-07-18 01:23:55
【问题描述】:
我有这个结构
typedef float TipoInfoSCL;
struct ElemSCL {
TipoInfoSCL info;
struct ElemSCL *next;
};
typedef struct ElemSCL TipoNodoSCL;
typedef TipoNodoSCL *TipoSCL;
我正在使用这个在 main 中创建一些节点:
TipoSCL scl = NULL;
scl = (TipoNodoSCL *)malloc(sizeof(TipoNodoSCL));
scl->info = 2;
scl->next = NULL;
for (int i = 10; i >= 0; i--)
addSCL(scl, i * 1.0f);
然后我尝试打印它们的值
printf(" addr scl: %p\n", &scl);
printf(" scl: %p\n", scl);
printf(" *scl: %f\n", *((float *)scl));
printf("&scl->info: %p\n", &scl->info);
printf("scl->info : %f\n", scl->info);
printf("scl->next : %p\n", &scl->next);
printf("scl->nexta: %p\n", ((void *)scl + 8));
printf("scl->next->info : %f\n", scl->next->info);
printf("scl->nexta->info: %f\n", *((float *)((char *)scl + 8)));
*((float *)((char *)scl + 8))) = 50;
但我无法正确访问最后一个值(scl->nexta->info),这是我得到的结果:
对于那些想知道 addSCL 的人是这样的
void addSCL(TipoSCL *scl, TipoInfoSCL e) {
TipoSCL temp = *scl;
*scl = (TipoNodoSCL*)malloc(sizeof(TipoNodoSCL));
(*scl)->info = e;
(*scl)->next = temp;
}
【问题讨论】:
-
你不能。指针算法仅适用于地址。
-
什么是
addSCL?
标签: c pointers linked-list