首页 > 编程语言 >复试C++看程序写结果 易错

复试C++看程序写结果 易错

时间:2024-03-23 17:22:20浏览次数:27  
标签:char 易错 ++ s2 s1 C++ 复试

复试C++看程序写结果   易错

#include <iostream>
using namespace std;

void function(char *& s1, char *& s2){
    int i = 0;
    for(; *s1 != *s2; s1++, s2++)  i++;
    //当两个指针同时指向字符'a'时,循环结束,i = 7
    *(s1-1) = '\0';
    *(s2-1) = '\0';    //把上一行和这一行删了也不影响最终结果,因为两个指针都指向'a'了,字符串都从这里开始
    cout << i << endl;
}

int main(){
    char str1[] = "Hello Nanjing";
    char str2[] = "I am liang";
    char *p1 = str1, *p2 = str2;
    function(p1, p2);
    cout << p1 << endl;
    cout << p2 << endl;
    return 0;
}            

结果

7
anjing
ang

但是,如果把函数的参数列表里的引用删去,结果会不一样

#include <iostream>
using namespace std;

void function(char * s1, char * s2){//注意这里的指针s1,s2只是形参
    int i = 0;
    for(; *s1 != *s2; s1++, s2++) i++;
    *(s1-1) = '\0';
    *(s2-1) = '\0';
    cout << i << endl;
    cout << "-----以下输出函数体内的两个字符串--------" << endl;
    cout << s1 << endl;
    cout << s2 << endl;
}

int main(){
    char str1[] = "Hello Nanjing";
    char str2[] = "I am liang";
    char *p1 = str1, *p2 = str2;
    function(p1, p2);
    cout << "------以下输出执行函数体之后在主函数的两个字符串-------" << endl;
    cout << p1 << endl;
    cout << p2 << endl;
    return 0;
}

结果

7
-----以下输出函数体内的两个字符串--------
anjing
ang
------以下输出执行函数体之后在主函数的两个字符串-------
Hello 
I am l

 

标签:char,易错,++,s2,s1,C++,复试
From: https://www.cnblogs.com/uacs2024/p/18091355

相关文章

  • c++小游戏
    #include<bits/stdc++.h>#include<windows.h>usingnamespacestd;inta,b,c;voidOK(){ system("cls"); cout<<"你时不时有饼?\n(1:yes2:NO)\n"; cin>>a; if(a==1){ cout<<"您以通关!"; }else{ system(&q......
  • C/C++知识总结(2)
    1.C++中的class和struct区别两者都有成员函数以及公有私有部分;class成员默认private,struct成员默认public。class默认private继承,struct默认public继承。2.C与C++中struct区别C语言中struct是用户自定义数据类型;C++中struct是抽象数据类型,支持成员函数的定义。C语言中stru......
  • C++U6-09 - 数学专题(二)各种进制知识
    学习目标 进制  二进制转十进制 二进制 代码 十进制转二进制代码 十进制转二进制小数方式,转其他进制同理 二进制转八进制方法二 八进制转二进制方法二二进制转十六进制方法二 代码 代码 十六进制转换成二进制 n进制转十进制小数部分......
  • c++解耦:Factory Method
    讨论C++语言中如何将通用逻辑与使用到的频繁变化的具体类型解耦。假设存在以下设计:/*==================================================================*/#include<iostream>classCore{public:~Core(){}public:voidsolve(){std::cout<<"Cor......
  • 【华为OD】2024年C卷真题集:最新的真题集题库 C/C++/Java/python/JavaScript
    2024年C卷真题题集题库,有2种分数的题目列表,分别是100分的列表、200分的列表需要订阅请看链接:C卷100分真题集质量分:94价格:39.9元C卷200分真题集质量分:94价格:99.9元从2023年11月开始,华为OD题目切换到C卷,基本上大概率会使用半年左右,要在2024年5月之前把这些题目都好好练习一下......
  • Qt/C++通用跨平台Onvif工具/支持海康大华宇视华为天地伟业等/云台控制/预置位管理/工
    一、前言在安防视频监控行业,Onvif作为国际标准,几乎主要的厂商都支持,不仅包含了国内的厂商,也包括主要的国际厂商,由于有了这个标准的存在,使得不同设备不同安防平台之间,能够接入各个厂家的硬件设备,互通有无,你中有我我中有你,实现良性竞争。ONVIF是一个全球性的开放式行业协议,其目标是......
  • 26.C++ STL常用容器—deque
    如果想单独一对一辅导学习C++、Java、Python编程语言的可以加微信咨询3.3deque容器3.3.1deque容器基本概念功能:双端数组,可以对头端进行插入删除操作deque与vector区别:vector对于头部的插入删除效率低,数据量越大,效率越低deque相对而言,对头部的插入删除速度回比v......
  • C++结构体内幕揭秘:sizeof之谜与内存布局探秘
     概述:C++结构体的`sizeof`不总是等于每个成员的`sizeof`之和,因为对齐和填充影响了内存布局。未对齐的结构体可能存在间隙,而对齐的结构体会插入填充以保持对齐。通过示例展示了结构体的内存对齐和填充,以及如何使用模板元编程打印结构体成员的偏移量,深入理解内存布局。在C++中,......
  • 2024届 C++ 刷题 笔试强训 Day 04
    选择题01有以下程序#include<iostream>#include<cstdio>usingnamespacestd;intmain(){intm=0123,n=123;printf("%o%o\n",m,n);return0;}程序运行后的输出结果是()A01230173B0123173C123173D173173题目解析:intm=......
  • 深入理解 C++ 语法:从基础知识到高级应用
    C++语法让我们将以下代码分解以更好地理解它:示例#include<iostream>usingnamespacestd;intmain(){cout<<"HelloWorld!";return0;}示例解释第1行:#include<iostream>是一个头文件库,它让我们可以使用输入和输出对象,比如cout(在第5行使用)。头文件为......