C语言经典试题--指针
分享一道C语言的经典的题目.题目要求如下:
利用字符指针实现字符串1“I Love China”与字符串2“So do I”的输出。然后利用字符指针将字符串2的内容复制到字符串1中,然后输出字符串1.
乍一看,没什么大的问题,用一个strcpy()函数直接就可以解决掉,但是仔细读题,指针!当时就没怎么学懂,所以在这,记录一下血与泪的辛酸史.
一、问题思路与代码
先看下面一段代码:
1 char string1[50]="I Love China.";
2 char string2[50]="So do I.";
3 char * p1,* p2;
4 p1=string1;
5 p2=string2;
很简单的两句话,初始化指针为两个字符串的首地址.
接着,尝试把字符串输出.
1 for(p1;*p1!=0;p1++)
2 {
3 printf("%c",*p1);
4 }
string2原理相同,到这的话还是很简单的嘛.
接下来,我们需要将字符串2的内容复制到字符串1中,啊哈,这才是重头戏.
首先,我们一定要初始化指针,否则就是在原先的指针之后进行操作,然后进行如下操作:
1 for(;*p2!='\0';p2++,p1++)
2 {//将string2赋值到string1并将其覆盖
3 *p1=*p2;
4 }
5 *p1='\0';
通过判断是p2的地址否到达字符串的最后,来将他们的指针的值进行交换,输出string1.好,问题解决.
二、思考
解决上一个问题之后,我们可以在这个问题上升升级,问题如果变成这样呢?
利用字符指针实现字符串1“I Love China”与字符串2“So do I”的输出。然后利用字符指针将字符串2的内容连接到字符串1中,然后输出字符串1.
同样,在使用过指正之后应该将指针初始化,这是一个良好的习惯.
然后,定义一个空指针p,使他初始化为string1(因为在开始初始化的时候,我们使用*p1来储存string1中的值,所以这时候 1 for(p=p1;*p!='\0';p++); 就在通过指针间的作用将p进行初始化,这里我是为了使p指针移动到p1后的位置).
1 char *p;
2 int i;
3 for(p=p1;*p!='\0';p++);
4 for(i=0;*(p2+i)!='\0';i++,p++)
5 {
6 *p=*(p2+i);
7 }
8 *p='\0';
随后,将p2的指针值添加到p后,这样就完成了.
C语言经典试题--指针的更多相关文章
- 【转载】经典10道c/c++语言经典笔试题(含全部所有参考答案)
经典10道c/c++语言经典笔试题(含全部所有参考答案) 1. 下面这段代码的输出是多少(在32位机上). char *p; char *q[20]; char *m[20][20]; int (*n ...
- C语言面试题大汇总之华为面试题 Eddy整理
1.局部变量能否和全局变量重名? 答:能,局部会屏蔽全局.要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局 ...
- C语言面试题1
1.分析下面代码有什么问题? 1 2 3 4 5 6 void test1() { char string[10]; char* str1 = "0123456789"; s ...
- 嵌入式开发—C语言面试题
嵌入式开发—C语言面试题 源地址:http://blog.csdn.net/xdx2ct1314/article/details/7358929 1. 用预处理指令#define 声明一个常数,用 ...
- C语言经典例题100
C语言经典例题100 来源 http://www.fishc.com 适合初学者 ----------------------------------------------------------- ...
- C语言面试题汇总之一
C语言面试题汇总之一 1.static有什么用途?(请至少说明两种) l 限制变量的作用域: 设置变量的存储域. 2.引用和指针有什么区别? 引用必须被初始化,指针不必: 引用初始化以后不能被改变,指 ...
- 12个有趣的C语言面试题
摘要:12个C语言面试题,涉及指针.进程.运算.结构体.函数.内存,看看你能做出几个! 1.gets()函数 问:请找出下面代码里的问题: #include<stdio.h> int ma ...
- c语言面试题之sizeof
c语言面试题之sizeof */--> c语言面试题之sizeof Table of Contents 1. sizeof 1 sizeof sizeof是c语言中判断数据类型或者表达式的长度符 ...
- C语言面试题(嵌入式开发方向,附答案及点评)
整理自C语言面试题(嵌入式开发方向,附答案及点评) 预处理器(Preprocessor) 1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SEC ...
随机推荐
- XGBoost原理介绍
XGBoost原理介绍 1. 什么是XGBoost XGBoost是一个开源机器学习项目,实现了GBDT算法,进行了算法和工程上的许多改进,广泛应用在Kaggle竞赛及许多机器学习竞赛中. 说到XGB ...
- APA自动泊车系统
APA自动泊车系统 1. 半自动泊车 自动泊车又称为自动泊车入位,它对于新手来说是一项相当便捷的配置,对于老手来说也省了些不少力气.那么自动泊车的原理是什么呢?能想怎么停就怎么停,想停哪儿就停哪儿吗? ...
- python_pycham,连接数据库,执行sql
本地搭建的mysql的新建的表的数据如下: 在pycham中连接mysql 执行sql ,举例编写如下: import pymysql if __name__ == '__main__': conn ...
- 【Azure 应用服务】Azure Web App的服务(基于Windows 操作系统部署)在被安全漏洞扫描时发现了TCP timestamps漏洞
问题背景 什么是TCP timestamps(TCP 时间戳)? The remote host implements TCP Timestamps, as defined by RFC1323 (h ...
- 四、SSL虚拟证书
沿用练习三,配置基于加密网站的虚拟主机,实现以下目标: 域名为www.c.com 该站点通过https访问 通过私钥.证书对该站点所有数据加密 4.2 方案 源码安装Nginx时必须使用--with- ...
- 1、java语言概述
Java基础知识图解 软件开发 软件开发 软件,即一系列按照特定顺序组织的计算机数据和指令的集合.有系统软件和应用软件之分. 人机交互方式 图形化界面(Graphical User Interface ...
- 天天写order by,你知道Mysql底层如何执行吗?
在实际的开发中一定会碰到根据某个字段进行排序后来显示结果的需求,但是你真的理解order by在 Mysql 底层是如何执行的吗? 假设你要查询城市是苏州的所有人名字,并且按照姓名进行排序返回前 10 ...
- JVM调优的反思与总结
垃圾回收的悖论 所谓"成也萧何败萧何".Java的垃圾回收确实带来了很多好处,为开发带来了便利.但是在一些高性能.高并发的情况下,垃圾回收确成为了制约Java应用的瓶颈.目前JDK ...
- LTDC_DMA2D驱动实验
STM32F429芯片使用LTDC.DMA2D.及RAM存储器,构成了一个完整的液晶控制器.LTDC负责不断刷新液晶屏(将数据从显存搬运到液晶屏),DMA2D用于图像数据搬运.混合及格式转换(将数据搬 ...
- SSM框架集成各配置文件
SSM框架集成各配置文件 Spring Spring MVC Mybatis 的整合SpringMVC相当于Spring的一个组件 本来就是一个家族的不存在整合的问题,所以主要就是Spring于Myb ...