鱼C论坛

 找回密码
 立即注册
查看: 1810|回复: 3

[已解决]指针结构体

[复制链接]
发表于 2022-10-16 16:57:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
struct ks
{
        int a;
        int *b;
}s[4],*p;
int main()
{
        int n=1,i;
        printf("\n");
        for(i=0;i<4;i++)
        {
                s[i].a=n;
                s[i].b=&s[i].a;
                n=n+2;
        }
        p=&s[0];
        p++;
        printf("%d,%d\n",(++p)->a,(p++)->a);
        return 0;
}
为啥输出7,3?
最佳答案
2022-10-16 17:17:28
本帖最后由 jackz007 于 2022-10-16 17:20 编辑

        gcc 编译、运行:
D:\[00.Exerciese.2022]\C>g++ -o x x.c

D:\[00.Exerciese.2022]\C>x

7,3
        使用 VC 6.0 编译、运行:
D:\[00.Exerciese.2022]\C>cl x.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

x.c
Microsoft (R) Incremental Linker Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

/out:x.exe
x.obj

D:\[00.Exerciese.2022]\C>x

5,3

D:\[00.Exerciese.2022]\C>
就是说:
【gcc】:
7,3
【VC6.0】:
5,3
      可见,结果因编译器而异,这种问题不适合讨论。
      如果不想自找麻烦,劝楼主不要写这样的代码。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-16 17:17:28 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-10-16 17:20 编辑

        gcc 编译、运行:
D:\[00.Exerciese.2022]\C>g++ -o x x.c

D:\[00.Exerciese.2022]\C>x

7,3
        使用 VC 6.0 编译、运行:
D:\[00.Exerciese.2022]\C>cl x.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

x.c
Microsoft (R) Incremental Linker Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

/out:x.exe
x.obj

D:\[00.Exerciese.2022]\C>x

5,3

D:\[00.Exerciese.2022]\C>
就是说:
【gcc】:
7,3
【VC6.0】:
5,3
      可见,结果因编译器而异,这种问题不适合讨论。
      如果不想自找麻烦,劝楼主不要写这样的代码。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-16 20:42:32 | 显示全部楼层
jackz007 发表于 2022-10-16 17:17
gcc 编译、运行:

        使用 VC 6.0 编译、运行:

可是他要考试呀,没办法
考试就是喜欢考这些
我建议是,考试只能是死记硬背,管他什么原理,背过就能考过
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-21 23:16:53 From FishC Mobile | 显示全部楼层
这种代码确实不好。
实际确实就是ks定义成了数组,又定义成p,是可以指向这个同类的数组。
你指向的是这个数组中的首元素地址,而不是s,这个我觉得有点不明白。此时,你的p自加后,是元素往后呢?还是s整个结构往后(实际上s无法往后了)
但看到你能成功运行,我又只能认为p可以指向元素,元素的本质呢,还是ks,看这绕的,简直不利于入门嘛。
但确实有些认为设置认识障碍的意味。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-27 10:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表