• 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!='';p2++,p1++)
    2     {//将string2赋值到string1并将其覆盖 
    3         *p1=*p2;
    4     }
    5     *p1='';

      通过判断是p2的地址否到达字符串的最后,来将他们的指针的值进行交换,输出string1.好,问题解决.

    二、思考

      解决上一个问题之后,我们可以在这个问题上升升级,问题如果变成这样呢?

        利用字符指针实现字符串1“I Love China”与字符串2“So do I”的输出。然后利用字符指针将字符串2的内容连接到字符串1中,然后输出字符串1.

      同样,在使用过指正之后应该将指针初始化,这是一个良好的习惯.

      然后,定义一个空指针p,使他初始化为string1(因为在开始初始化的时候,我们使用*p1来储存string1中的值,所以这时候 1 for(p=p1;*p!='';p++); 就在通过指针间的作用将p进行初始化,这里我是为了使p指针移动到p1后的位置).

    1 char *p;
    2     int i;
    3     for(p=p1;*p!='';p++);
    4     for(i=0;*(p2+i)!='';i++,p++)
    5     {
    6         *p=*(p2+i);
    7     } 
    8     *p='';    

      随后,将p2的指针值添加到p后,这样就完成了.  

  • 相关阅读:
    php-管理变量
    php-变量的间接引用
    php-eval()
    HTML
    php观
    笔记1
    脚本语言
    Windows Server 2012如何把快捷方式加到启动文件夹中
    VIM的笔记
    mongodb 从3.0 升级到3.2
  • 原文地址:https://www.cnblogs.com/yandashan666/p/11046322.html
Copyright © 2020-2023  润新知