C语言中关于二级指针的笔试题
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语言中关于二级指针的笔试题相关推荐
- C语言中的二级指针和二维数组问题
关于二级指针和二维数组两者差别很大,不可以直接用二级指针传递二维数组 首先来看看二维数组在内存中是如何组织的呢? 一维数组 T arr1 = new T[9] 二维数组T arr2 = new T[ ...
- 【C 语言】结构体 ( 结构体中嵌套二级指针 | 为 结构体内的二级指针成员 分配内存 | 释放 结构体内的二级指针成员 内存 )
文章目录 一.结构体中嵌套二级指针 1.结构体中嵌套二级指针 类型声明 2.为 结构体内的二级指针成员 分配内存 3.释放 结构体内的二级指针成员 内存 二.完整代码示例 一.结构体中嵌套二级指针 1 ...
- 【C 语言】多级指针 ( 在函数中生成 二级指针 | 通过传入的 三级指针 进行间接赋值 )
文章目录 前言 一.在函数中生成 二级指针 ( 通过传入的 三级指针 进行间接赋值 ) 二.完整代码示例 前言 如果要 通过 函数形参 间接赋值 修改 nnn 级指针, 需要向函数中传入 n+1n + ...
- C语言和C++语言中的泛型指针
C语言和C++语言中的泛型指针 首次,在说泛型指针之前,先说说特定指针,特定指针,顾名思义,就是有明确的类型的指针,如:int * ,char * ,float * ,short* ,student* ...
- C语言中函数和指针的參数传递
C语言中函数和指针的參数传递 近期写二叉树的数据结构实验.想用一个没有返回值的函数来创建一个树,发现这个树就是建立不起来,那么我就用这个样例讨论一下c语言中指针作为形參的函数中传递中隐藏的东西. 大家 ...
- C语言中的函数指针、函数的直接/间接调用、C# 委托(自定义委托、内置泛型委托、委托的实例化、委托的一般使用(模板方法、回调方法)、泛型委托、多播委托、同步/异步使用委托)
文章目录 C语言中的函数指针 函数的直接调用与间接调用 Java中没有与委托对应的功能实体 C# 委托 C# 自定义委托类型 C# 内置泛型委托类型 委托的实例化 委托也支持泛型的使用 委托的一般使用 ...
- c语言如何用指针操作一维字符数组,C语言中数组和指针的互操作
C是一种怀旧的语言,因为它的历史很久远,然而自从各种面向对象的编程语言的相续出现让它的影响力日减.当然了,这是无可非议的,但是C的高效性是其他语言无妨比拟的,所以我们有必要把握其中的精华与奥妙,也就有 ...
- C语言中的野指针问题
C语言中的野指针问题 一.野指针 1.指针变量中的值是非法内存地址,进而形成野指针 2.野指针不是NULL指针,是指向不可用内存地址的指针 3.NULL指针并无危害,很好判断,也很好调试 4.C语言中 ...
- 一道指针压轴笔试题讲解 (进阶指针必看)
今天我来给大家讲解一道指针压轴笔试题,同时也是进阶指针知识必会的一道题.相信大家在认真梳理清楚这道题后,对指针的知识了解定会更上一层楼 ~ 话不多说,上题目 : 请问程序输出结果是什么 ? 相信大家一 ...
- 关于C语言中的数组指针、指针数组以及二级指针
概念解释 数组指针:首先它是一个指针,它指向一个数组,即指向数组的指针:在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道.数组指针指向的是数组中的一个具体元素,而不是整个数组,所 ...
最新文章
- 人工智能技术在美国国家安全领域的应用
- Golang.org不能访问解决方法
- 浅谈:数据结构之双链表结构与代码模拟双链表的实现
- Linux 7 cmake:curses library not found
- native封装卡片 react_自己动手封装一个React Native多级联动
- 解决App启动时白屏的问题
- Redis高效性探索--线程IO模型,通信协议
- php登录个性验证码,PHP七种不同的个性创意验证码例子
- 2021年中国医药营销数字化研究报告
- 【HTML】使用css3和html给网站添加上春节灯笼特效
- 《SQL Server 必知必会》读书笔记
- authorization 传 就跨域_跨域访问接口上传图片出现options请求问题解决方法
- Hvv近期0day总结一
- MySql统计函数COUNT详解
- 硬盘分区整数计算器(如何让硬盘容量成整数)
- python图片转换成文字_在python中将图像转换为字节文字 - python
- linux安装rtl8192cu网卡驱动,编译并安装rtl8192cu驱动程序
- 华为路由器6to4隧道原理及配置
- Windows重装电脑系统教程(制作启动U盘+重装系统)建议收藏
- matlab快速生成双峰函数
热门文章
- NPN与PNP三极管
- jetson nano 电源_Jetson Nano必读-第二站:电源
- Xcode13运行iPhone14模拟器暨低版本Xcode运行高版本模拟器
- 计算机桌面图标被挡怎么办,电脑桌面图标偏左,被挡住了大半,就连网页窗口也...
- 三国志战略版:先锋斥候广州行
- 计算机类sci中接受综述么,sci综述类期刊有哪些
- [无线]无线传输距离预估计算
- Word to PDF Converter v3.0 算法分析及注册机
- 电子邮件地址怎么写?
- Java验证邮箱格式是否正确