文章目录

  • 前言
  • 第一题
  • 第二题
  • 第三题
  • 第四题
  • 第五题
  • 第六题
  • 第七题
  • 第八题

前言

一定要会画图,了解内存,数组名,指针的各种形式
初看代码是代码,在看代码是内存,最后看代码还是代码


第一题

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


第二题

由于还没学习结构体,这里告知结构体的大小是20个字节
0x1就是1
一个结构体变量+1跳过一个结构体变量的大小

#include <stdio.h>
struct Test
{int Num;char *pcName;short sDate;char cha[2];short sBa[4];
}*p;
//结构体指针 *p指向Test结构体对象//已知,结构体Test类型的变量大小是20个字节
0x1 == 0
一定要在x86平台int main()
{printf("%p\n", p + 0x1);加的是一个结构体变量的大小printf("%p\n", (unsigned long)p + 0x1);printf("%p\n", (unsigned int*)p + 0x1);return 0;
}

第三题

%x是以十六进制形式打印
小端存储大放小,取出是从右往左取

#include <stdio.h>
int main()
{int a[4] = { 1, 2, 3, 4 };int *ptr1 = (int *)(&a + 1);int *ptr2 = (int *)((int)a + 1);((int)a+1)将a强制转换成整形,整形+1那就是+1如果a = 0x0012fff40a+1 --->0x0012ff44(int) a+1--->0x0012ff41  整形纯粹加1纯粹+1printf( "%x,%x", ptr1[-1], *ptr2);return 0;
}


第四题

( ) 逗号表达式从左往右计算
所以a[3][2] = {(0,1),(2,3),(4,5)}
里面只有后面一个有效。
所以存放的是
{1,3},
{5,0},
{0,0}

#include <stdio.h>
int main()
{int a[3][2] = { (0, 1), (2, 3), (4, 5) };int *p;p = a[0];printf( "%d", p[0]);1return 0;
}

第五题

#include <stdio.h>
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]);return 0;
}


第六题

#include<stdio.h>
int main()
{int aa[2][5] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };int *ptr1 = (int *)(&aa + 1);&&a 跳过数组大小int *ptr2 = (int *)(*(aa + 1));aa+指向首元素后面一组元素printf( "%d,%d", *(ptr1 - 1), *(ptr2 - 1));result:      10            5*(ptr1 - 1) 就是10后面的元素-1到10然后解引用拿到10*(ptr2 - 1) 就是6-1然后解引用拿到5return 0;
}


第七题

#include <stdio.h>
int main()
{char *a[] = {"work","at","alibaba"};char**pa = a;pa++;printf("%s\n", *pa);result: atreturn 0;
}


第八题

++ --操作符会产生副作用 会直接修改指向空间位置
后缀比前缀要高
所以 *- -*++cpp 要先++在- -

#include <stdio.h>
int main()
{char *c[] = {"ENTER","NEW","POINT","FIRST"};char**cp[] = {c+3,c+2,c+1,c};char***cpp = cp;printf("%s\n", **++cpp);printf("%s\n", *--*++cpp+3);printf("%s\n", *cpp[-2]+3);printf("%s\n", cpp[-1][-1]+1);return 0;
}



c语言指针 —— 面试题相关推荐

  1. C语言指针面试题解析(万字超多题,每题都有详解)

    目录 零.前言 1.整型数组 2.字符数组 1.strlen函数 2.arr[]={'a','b','c'....}型 1.sizeof()计算 2.strlen()计算 3.char arr[]=& ...

  2. 全国计算机二级考试c语言指针,全国计算机等级考试二级C语言指针检测试题.doc...

    . . . . 学习参考 全国计算机等级考试二级C语言指针测试题 一.选择题 (1)设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价 ...

  3. c语言指针p2等于p1,C语言指针 -- 面试题

    有人在群里发布了一道试题,学习一下,测试学习环境为32位机 #include int main() { int a[5] = { 1, 2, 3, 4, 5 }; int *p1 = (int*)(& ...

  4. c语言 指针不能赋值吗,程序员编程C语言指针答疑:指针赋值没那么简单

    C语言指针,纸老虎 一.程序员编程C语言答疑合集 更多C语言学习答疑文章,请参阅:程序员编程C语言答疑文章合集 也可以加入下方我的"C语言答疑课堂"圈子,第一时间看到我给大家带来的 ...

  5. c语言指针笔试面试题,c语言指针面试常见问题

    c语言指针面试常见问题 指针的使用,一直是c语言面试题中必考的部分,因为指针本身使用的复杂性与普适性,所以考点非常多,而且也可以与其他知识相互结合,因此我们将会使用五篇专题的篇幅来介绍指针. 分析下面 ...

  6. 带你刷笔试关的小怪|详解指针习题和面试题【C语言/指针/进阶】

    文章目录 前言 9. 指针和数组笔试题解析 复习回顾 一维数组 字符数组 二维数组 10. 指针笔试题 笔试题1: 笔试题2 笔试题3 笔试题4 笔试题5 笔试题6 笔试题7 (#)笔试题8 结语 前 ...

  7. c语言50到100套,c语言51-100套试题答案及详解.pdf

    c语言51-100套试题答案及详解 2 double ave=0.0; 第 51 套 试题答案及详解 3 *n=0; 4 for(i=0; i 5 ave /=N; /* 计算平均值 */ 一.程序填 ...

  8. 2015电大c语言,2015电大本科C语言程序设计A试题汇总.doc

    2015电大本科C语言程序设计A试题汇总 2015年电大本科<C语言程序设计A>一.单选题 1.在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为 A . A. main B. ...

  9. 在c语言程序中 对文件进行操作首先要,《C语言程序设计》试题八及答案

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如果有侵权请立即联系:55525090@qq.com,我 ...

最新文章

  1. Facebook最新研究:无需额外训练AI,即可加速NLP任务
  2. 下载插件(贪心算法)
  3. linux挂载硬盘_一篇文章带你了解 linux 如何进行挂载
  4. linux ugo 权限 ugo即user group other
  5. 浅谈Linux服务器究竟设置多大交换分区合适
  6. 路由器+摄像头:Netgear在国内怎么走?
  7. ubuntu server 16.10 启用无线网卡
  8. 2019年广西大学硕士研究生入学《数据结构与程序设计(817)》考试大纲
  9. 当今 计算机已进入千家万户英语,学生英语教学论文,关于信息技术在大学英语教学中的应用探析相关参考文献资料-免费论文范文...
  10. 数据湖,已成为海量数据存储与分析的重要承载方式
  11. 【Linux】shell命令学习之find
  12. (44)常用终端命令总结
  13. Oracle并行事务回滚相关参数及视图
  14. memcached高速缓存学习笔记002---telnet操作memcached
  15. 如何配置YUM本地更新源
  16. cookie 设置有效期 检测cookie
  17. python时间处理,datetime中的strftime/strptime
  18. 拓端tecdat|R语言中广义线性模型(GLM)中的分布和连接函数分析
  19. 小程序使用javascript-obfuscator工具进行代码混淆处理
  20. maxpooling反向传播

热门文章

  1. 机器学习系列--数据预处理
  2. 点我一下,你将获得排查性能问题的超能力~
  3. 谷歌账号注册时中国大陆手机号无法验证,“此电话号码无法用于进行验证”快速解决。2023年新方法
  4. 欧拉角、轴角与四元数
  5. 数组的push、unshift、pop、shift方法实现
  6. SSO - 我们为何需要单点登录系统
  7. MATLAB可以使用但是使用help函数报错问题的解决
  8. 面试题HTML +CSS
  9. Linux安装mysql没有my.cnf文件
  10. 微信公众号开发:服务器配置(Java)