ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

指针习题

2021-04-12 16:51:11  阅读:165  来源: 互联网

标签:return int 0x1 printf Test 习题 main 指针


第一题:

求以下输出结果

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

输入结果
指针习题

第二题:

struct Test {
    int Num;
    char* pcName;
    short sDate;
    char cha[2];
    short sBa[4];
}*p;
//假设p的值为Ox100000,如下表表达式的值分别是多少?
//已知,结构体Test类型的变量大小是20个字节
int main() {
  p = (struct Test*)0x100000;
    printf("%p\n", p + 0x1);
    printf("%p\n", (unsigned long)p + 0x1);
    printf("%p\n", (unsigned int*)p + 0x1);
    return 0;
}

输出结果

指针习题

解析
指针习题

指针加减整数的运算,取决于指针类型。

第三题:

int main() {
    int a[4] = { 1,2,3,4 };
    int *ptr1 = (int *)(&a + 1);
    int *ptr2 = (int*)((int)a + 1);
    printf("%x,%x", ptr1[-1], *ptr2);
    return 0;
}

输出结果
指针习题
16进制前面的0可以省略
解析

指针习题

第四题:

int main() {
    int a[5][5];
    int(*p)[4];
    p = a;
    printf("%p%d\n", &p[4][2] - &a[4][2], &p[4][2].&a[4][2]);
}

输入结果:
指针习题

解析:

指针习题

第五题:


int main() {
    int a[3][2] = { (0,1),(2,3),(4,5) };
    int *p;
    p = a[0];
    printf("%d", p[0]);
    return 0;
}

输出结果:

指针习题

注意 :二维数组中是逗号表达式,所以a[3][2]={1,3,5}.

标签:return,int,0x1,printf,Test,习题,main,指针
来源: https://blog.51cto.com/u_15100290/2701669

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有