首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【C语言】指针笔试题

✨作者:@平凡的人1 ✨专栏:《C语言从0到1》 ✨一句话:凡是过往,皆为序章 ✨说明: 过去无可挽回, 未来可以改变 ---- 简单回顾一下,我们上一篇的内容:主要介绍了指针与数组笔试题目。...这一篇,我们继续趁热打铁,主要介绍——8道指针笔试题,不说多的,直接开整 文章目录 第一题 第二题 第三题 第四题 第五题 第六题 第七题 第八题 总结 第一题 #include int...] = {"ENTER","NEW","POINT","FIRST"}; char**cp[] = {c+3,c+2,c+1,c}; char***cpp = cp; printf("%s\n",...2,c+2指向point地址,第二*得到point *–*++cpp+3:++cpp指向c+1的地址,解引用找到c+1,–就把c+1变成了c,c指向ENTER的地址,在解引用,得到ENTER,+3就是ENTER...2,-1得到c+1,c+1就是NEW的地址,在解引用得到NEW,+1得到EW。

52320
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C语言------------指针笔试题目深度剖析

    #include 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; } 这道题目的复杂地方就在于指针指向的不断变化 (1)首先main函数里面c,c+1,c+2,c+3要正确的理解...,分别指向哪些内容; (2)明白指向的地址以后cpp加加后指向了c+2所在地方,进行两次解引用以后就是ENTER; (3)第二个输出在第一个加加的基础上,这个时候指向c+2,然后减减就是cp里面的第三个元素指...,所以打印TER; 这个要注意执行顺序的问题,也就是优先级,在没有+3之前,整体是从右边向左边执行的; (4)cpp[-2]等价于*(cpp-2),所以这个时候又回到了最开始的位置你,也就是cpp指向c+

    5700

    我被这道c语言笔试题整不会了

    我那时候也就顺便给他找了一些C语言、Linux等等笔试题,后面也教他稍微修改过几次简历。 总体来说,这位同学能有现在的三个比较好的offer很大原因在于他自身的基础不错,肯付出、肯努力的结果。...前几天和我分享了他参加面试遇到的一道c语言笔试题,他说当时有点整不会了,竟然做错了,然后面试官也让他自己回去想想。因为大部分题做的还可以,最后也通过了面试。...有没有一种感觉: 自以为对指针的基本操作已经掌握,但是看到这道面试题,是不是被狠狠扇了一下。 说实话这完全是坑爹不实际的笔试题,不过这样坑爹的笔试题还有很多!...但是在c/c++中,函数指针解引用还是会当成函数指针处理,所以函数指针可以不限次数的解引用,效果和不解引用是一样的,可以换句话说:*操作对它是无效的!

    25920

    【C语言】动态内存管理及相关笔试题

    本文我们就详细介绍一下动态内存管理相关的函数和知识点 二、malloc和free    C语言的动态内存分配是通过库函数实现的,该节我们就来讲解其中的malloc函数和free函数的作用及用法,使用这两个库函数需要包含头文件...malloc开辟空间失败了,我们就需要打印一下开辟失败的原因,然后给出一个错误返回,结束程序,这是一个好习惯,我们可以在每次开辟空间时都判断一下,避免出错    如果不会perror函数的,可以参考文章:【C语言...或者calloc的时候开辟的空间还是固定的,比如开辟了10个整型,那么就只能使用10个整型,所以如果使用第11个整型的空间,那么程序就会报越界访问的错误 对⾮动态开辟内存使⽤free释放:这样的操作是C语言标准未定义的...动态开辟内存忘记释放(内存泄漏):由于动态开辟的内存操作系统不会主动收回,所以即使我们不使用那些空间了,也会一直占用内存空间,如果大量动态开辟的空间占据了内存,那么就会造成内存泄漏 五、动态内存经典笔试题...C++中程序内存区域划分    在动态内存管理的最后,我们将C/C++中程序内存区域划分拿来总结一下C/C++程序内存分配的⼏个区域: 栈区(stack):在执⾏函数时,函数内局部变量的存储单元都可以在栈上创建

    9210

    c++面试选择题_C语言经典笔试题

    malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。 它们都可用于申请动态内存和释放内存。...因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。...这个唯一选择很关键,它说明了引用的重要性以及无可替代性,也许这就是C++语言中引入引用这个概念的原因吧。...C++是不是类型安全的? 答案:不是。两个不同类型的指针之间可以强制转换(用reinterpret cast)。C#是类型安全的。 16. main 函数执行以前,还会执行什么代码?...C++/C 语言没有办法知道指针所指的内存容量,除非在申请内存时记住它。注意当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。

    1.1K10

    C语言之指针详解(5)(含有易错笔试题)

    一、sizeof和strlen的对比 有一个很神奇的现象,就是在C语言中sizeof和strlen是两个毫不相干的东西一个是操作符,一个是库函数。但是对于初学者来说就是很容易把两者弄混淆。...printf("%d\n", sizeof a); printf("%d\n", sizeof(int)); return 0; } 代码运行结果如下: 1.2 strlen strlen是C语言库函数...计算操作数所占内存的大小,单位是字节 2.strlen是求字符串长度的,统计的是\0之前字符的个数 3.不关注内存中存放什么数据 3.关注内存中是否有\0,如果没有\0,就会持续往后找,可能会越界 对于下面的笔试题...二、数组和指针笔试题 在下面的题目中sizeof的情况比较简单,对于strlen有些地方稍微有点难度,我会为大家做出相应的解释。...三、指针运算笔试题 3.1 题目1 #include int main() { int a[5] = { 1, 2, 3, 4, 5 }; int* ptr = (int*)(&

    4310

    腾讯云后台开发最新笔试题,你能做出几个??

    今天(2021.02.05)晚上,笔者的一位做软件开发的朋友参加了腾讯云通信IM后台开发的视频面试,现分享一下面试的真题,供大家参考,以备不时之需。...岗位:腾讯云通信IM后台开发工程师 职位描述 ? 负责即时通信IM云相关产品的后台架构设计和功能开发; 搭建云化开放覆盖全球的稳定、实时、高效的消息服务。...工作要求 本科及以上学历,计算机或相关专业; 2年以上Linux/Unix后台开发经验,精通C/C++/go其中一种开发语言; 熟悉TCP/IP协议、网络编程,熟悉Redis、Mysql、Kafka等常用数据库...通过腾讯云技术认证或同等资格认证的优先录取。 ? ? 笔试题 说明:以下题目均在32位linux环境下,小端字节序 ? 1、以下语句分别输出什么?...5、求下面结构体大小(5分) struct B { int b; char c; }; typedef struct { int a; char b; short c;

    1.4K40

    【C语言基础】:动态内存管理(含经典笔试题分析)

    C语言引入了动态内存开辟,让程序员自己可以申请和释放空间,就比较灵活了。...2. malloc函数和free函数 2.1 malloc函数 C语言提供了⼀个动态内存开辟的函数: void* malloc (size_t size); 这个函数向内存申请⼀块连续可用的空间,并返回指向这块空间的指针...【示例】:内存的申请 2.2 free函数 C语言提供了另外⼀个函数free,专门是用来做动态内存的释放和回收的,函数原型如下: void free (void* ptr); free函数用来释放动态开辟的内存...3. calloc函数和realloc函数 3.1 calloc函数 C语言还提供了⼀个函数叫 calloc, calloc 函数也用来动态内存分配。...动态内存经典笔试题分析 【题目1】: void GetMemory(char* p) { p = (char*)malloc(100); } void Test(void) { char* str

    17210
    领券