C语言中关于二级指针的笔试题

int main(){  char* str[] = { "welcome","to","Fortemedia","Nanjing" };char** p = str + 1;str[0] = (*p++) + 2;str[1] = *(p + 1);str[2] = p[1] + 3;str[3] = p[0] + (str[2] - str[1]);printf("%s\n", str[0]);//\nprintf("%s\n", str[1]);//Nanjingprintf("%s\n", str[2]);//jingprintf("%s\n", str[3]);//greturn 0;
}

看到这段代码 ,我们不仔细思考, 很可能得出错误的结果 ,

比如得到 
(空)
Nanjing
jing
temedia

不过 , 我们认真分析的话 , 得出正确答案也并不困难 .

char* str[] = { "welcome","to","Fortemedia","Nanjing" };
char** p = str + 1;

运行这两段代码后会得到如图所示 :


画出(*p++) + 2

str[0] = (*p++) + 2;

再将(*p++) + 2的值赋给str[0] , 此时str[0]指向就如下图 :

再画出*(p + 1)

str[1] = *(p + 1);

再将*(p + 1)的值赋给str[1] , 此时str[1]指向向就如下图 :

再画出p[1] + 3

str[2] = p[1] + 3;

然后再将p[1]+3的值赋给str[2] ,如下图:

再画出 p[0] + (str[2] - str[1])

str[3] = p[0] + (str[2] - str[1]);

我们可以得到str[2] -str[1] = 3 , 在两个指针指向同一片连续的存储空间时 , 是可以相减的 , 相减为两指针间差了几个元素 ,很明显差了三个 , 再将p[0]+str[2] -str[1]的值赋给str[3] ,如下图 :

所以依次输出str[0], str[1], str[2], str[3] 应该得到

(空)
Nanjing
jing
g

我们运行这段代码 ,得到下图

C语言中关于二级指针的笔试题相关推荐

  1. C语言中的二级指针和二维数组问题

    关于二级指针和二维数组两者差别很大,不可以直接用二级指针传递二维数组 首先来看看二维数组在内存中是如何组织的呢? 一维数组 T arr1 = new T[9]  二维数组T arr2 = new T[ ...

  2. 【C 语言】结构体 ( 结构体中嵌套二级指针 | 为 结构体内的二级指针成员 分配内存 | 释放 结构体内的二级指针成员 内存 )

    文章目录 一.结构体中嵌套二级指针 1.结构体中嵌套二级指针 类型声明 2.为 结构体内的二级指针成员 分配内存 3.释放 结构体内的二级指针成员 内存 二.完整代码示例 一.结构体中嵌套二级指针 1 ...

  3. 【C 语言】多级指针 ( 在函数中生成 二级指针 | 通过传入的 三级指针 进行间接赋值 )

    文章目录 前言 一.在函数中生成 二级指针 ( 通过传入的 三级指针 进行间接赋值 ) 二.完整代码示例 前言 如果要 通过 函数形参 间接赋值 修改 nnn 级指针, 需要向函数中传入 n+1n + ...

  4. C语言和C++语言中的泛型指针

    C语言和C++语言中的泛型指针 首次,在说泛型指针之前,先说说特定指针,特定指针,顾名思义,就是有明确的类型的指针,如:int * ,char * ,float * ,short* ,student* ...

  5. C语言中函数和指针的參数传递

    C语言中函数和指针的參数传递 近期写二叉树的数据结构实验.想用一个没有返回值的函数来创建一个树,发现这个树就是建立不起来,那么我就用这个样例讨论一下c语言中指针作为形參的函数中传递中隐藏的东西. 大家 ...

  6. C语言中的函数指针、函数的直接/间接调用、C# 委托(自定义委托、内置泛型委托、委托的实例化、委托的一般使用(模板方法、回调方法)、泛型委托、多播委托、同步/异步使用委托)

    文章目录 C语言中的函数指针 函数的直接调用与间接调用 Java中没有与委托对应的功能实体 C# 委托 C# 自定义委托类型 C# 内置泛型委托类型 委托的实例化 委托也支持泛型的使用 委托的一般使用 ...

  7. c语言如何用指针操作一维字符数组,C语言中数组和指针的互操作

    C是一种怀旧的语言,因为它的历史很久远,然而自从各种面向对象的编程语言的相续出现让它的影响力日减.当然了,这是无可非议的,但是C的高效性是其他语言无妨比拟的,所以我们有必要把握其中的精华与奥妙,也就有 ...

  8. C语言中的野指针问题

    C语言中的野指针问题 一.野指针 1.指针变量中的值是非法内存地址,进而形成野指针 2.野指针不是NULL指针,是指向不可用内存地址的指针 3.NULL指针并无危害,很好判断,也很好调试 4.C语言中 ...

  9. 一道指针压轴笔试题讲解 (进阶指针必看)

    今天我来给大家讲解一道指针压轴笔试题,同时也是进阶指针知识必会的一道题.相信大家在认真梳理清楚这道题后,对指针的知识了解定会更上一层楼 ~ 话不多说,上题目 : 请问程序输出结果是什么 ? 相信大家一 ...

  10. 关于C语言中的数组指针、指针数组以及二级指针

    概念解释 数组指针:首先它是一个指针,它指向一个数组,即指向数组的指针:在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道.数组指针指向的是数组中的一个具体元素,而不是整个数组,所 ...

最新文章

  1. 人工智能技术在美国国家安全领域的应用
  2. Golang.org不能访问解决方法
  3. 浅谈:数据结构之双链表结构与代码模拟双链表的实现
  4. Linux 7 cmake:curses library not found
  5. native封装卡片 react_自己动手封装一个React Native多级联动
  6. 解决App启动时白屏的问题
  7. Redis高效性探索--线程IO模型,通信协议
  8. php登录个性验证码,PHP七种不同的个性创意验证码例子
  9. 2021年中国医药营销数字化研究报告
  10. 【HTML】使用css3和html给网站添加上春节灯笼特效
  11. 《SQL Server 必知必会》读书笔记
  12. authorization 传 就跨域_跨域访问接口上传图片出现options请求问题解决方法
  13. Hvv近期0day总结一
  14. MySql统计函数COUNT详解
  15. 硬盘分区整数计算器(如何让硬盘容量成整数)
  16. python图片转换成文字_在python中将图像转换为字节文字 - python
  17. linux安装rtl8192cu网卡驱动,编译并安装rtl8192cu驱动程序
  18. 华为路由器6to4隧道原理及配置
  19. Windows重装电脑系统教程(制作启动U盘+重装系统)建议收藏
  20. matlab快速生成双峰函数

热门文章

  1. NPN与PNP三极管
  2. jetson nano 电源_Jetson Nano必读-第二站:电源
  3. Xcode13运行iPhone14模拟器暨低版本Xcode运行高版本模拟器
  4. 计算机桌面图标被挡怎么办,电脑桌面图标偏左,被挡住了大半,就连网页窗口也...
  5. 三国志战略版:先锋斥候广州行
  6. 计算机类sci中接受综述么,sci综述类期刊有哪些
  7. [无线]无线传输距离预估计算
  8. Word to PDF Converter v3.0 算法分析及注册机
  9. 电子邮件地址怎么写?
  10. Java验证邮箱格式是否正确