C笔试题指针

嵌入式Linux

共 1074字,需浏览 3分钟

 ·

2021-05-20 12:39

解剖几个有点难度的C笔试题

昨天写的那个面试题,今天在群里讨论,有个同学加工了下,变成了新的题目,写出来大家一起看看。

#include <stdio.h>
struct node
{

    int a;int b;int c;
};
int main()
{
    struct node s= {3,5,6};
    int*pt = (int*)(&s+1);
    printf("%d",*(pt-2));
    getchar();
    return 0;
}

求代码输出


&s 是一个结构体地址,也就是结构体指针,对指针的操作加1,减1,指的是加上它的类型大小,&s +1 等于 &s + sizeof(struct node)


知道这个之后就比较容易得出答案了。




还有之前的题目,如果是一个数组a[5]={1,2,3,4,5},然后对数组名操作。

#include <stdio.h>

int main()
{
    int a[5]={1,2,3,4,5};
    printf("%d\n",*((int*)(&a+1)-2));
    getchar();
    return 0;
}

求上面的代码输出,这个题目和上面的题目是一样的,对指针操作一定要搞清楚指针的类型,因为指针类型可以不断改变的。











推荐阅读:

专辑|Linux文章汇总
专辑|程序人生
专辑|C语言
我的知识小密圈

关注公众号,后台回复「1024」获取学习资料网盘链接。

欢迎点赞,关注,转发,在看,您的每一次鼓励,我都将铭记于心~



浏览 17
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报