C++杂碎敲过的代码

2024-05-30 00:48
文章标签 代码 c++ 杂碎 敲过

本文主要是介绍C++杂碎敲过的代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

编译环境Eclipse C++

  • c++是在C语言的基础上增加了面向对象的思想。
  • 增加字符串数组以及字符串类型:
    char strs []= “i am icanactnow !”;
    string strs =”i am superman !”;

字符串指针

#include <iostream>
using namespace std;int main() {char *str = "s13un";//字符指针存放字符串cout << str << endl;return 0;
}

字符串指针

#include <iostream>
using namespace std;int main() {char str1[] = "hello" ;char str2[20], *p1 , *p2;p1= str1 ;p2= str2 ;for(;*p1!='\0';p1++,p2++)*p2 = *p1;*p2 = '\0';cout << str1<<str2 << endl;return 0;
}

函数指针

#include <iostream>
using namespace std;int main() {
//函数指针调用函数
int max (int x, int y);//声明函数要写的向声明一样全//定义一个函数指针,注意体会格式,以及使用方式
int (*p)(int x,int y);
p= max;//将函数的首地址赋值给函数指针pint x = p(6,2);cout << x << endl;return 0;
}int max (int x,int y){return  x>y? x:y;}

指针数组

#include <iostream>
using namespace std;int main() {
//指针数值
//指针数组存放着数组元素的首地址char *p[4]= {"sun1","yang","fan","!"};char *p1;p1= p[0];//思考这块为什么不能写成 p1 = p;cout<< p1 <<endl;return 0;
}

验证指针数组存放的是元素的首地址

#include <iostream>
using namespace std;int main() {char *p[4]= {"sun1","yang","fan","!"};char *p1;
// p1= p;cout<< ++p[0] <<endl;return 0;
}
//输出结果是:un1

指向指针的指针

// 仔细体会运行结果。
#include <iostream>
using namespace std;int main() {char **p1;char *p[4]= {"sun1","yang","fan","!"};p1= p+2;cout<< p<<'\n'<<*p<<'\n'<<**p<<'\n' <<endl;return 0;
}
//运行结果 
0x22ff20
sun1
s

const 指针

  • const 指针分三种 指向常量的指针/常指针/指向常量的常指针。
  • 分析:const离谁近谁就不变。
//指向常量的指针
int a=12,b=15;
const int *p = &a; //const离int近,所以常量不能修改。
*p =15;//非法,指针为const类型不允许通过指针修改地址上的值。
a = 15;//合法,const 指针并不能限制整形变量。要组织整形变量改变,则 const int a = 12;
//常指针
char *const p1 = "icanactnow";//const离指针近所以指针不能修改。
p1 = "error"; //由上面得,此语句不合法。
//指向常量的常指针
int a= 6;
int b= 7;
const int * const p1 = &a;//都不能变。
p1 = &b ;//非法
*p1 = 8;//非法,试图通过指针修改常量
a = 9;//合法,所有的const相关的只是通过指针相关的受影响。

引用

//简单示例
int a = 6;
int &b = a; //则b为a的引用,b为a的别名。
//错误示例
int a[5];
int &b = a;//不能建立数组引用
int &b = a[1];//不能建立数组元素引用int &c = b;//不能建立引用的引用。int *p = b;//不能建立引用的指针。
  • 示例
#include <iostream>
using namespace std;int main() {//用引用实现两个数字的调换void swap (int & ,int &); //函数声明int a= 7 , b=8;swap (a,b);cout << a<<b<< endl; // prints !!!Hello World!!!return 0;
}void swap (int &c ,int &d){int temp;temp = c;c= d;d=temp;}

插播对指针输出字符串的理解

int i =12;
int *p= &i;
cout << *P << endl; //输出12 ,p 输出 地址。
char * p = "sun";
cout << *p << endl;//输出s ,P输出sun.

解释:对于字符串指针存放的是首地址,要输出时首先判断如果是字符型的指针就将从首地址开始的字符依次输出知道’\0’结束。所以会出现如上所示情况。

new与delete

#include <iostream>
using namespace std;struct student {string name;int number;
};
int main() {student * p ;p = new  student; //开辟一个类型为student类型的结构体存储空间,将返回的地址赋值给结构体指针。p->name= "sun";//通过结构体指针给结构体成员赋值。p->number = 01;cout << p->name<< endl; // prints !!!Hello World!!!delete  p;// 释放p的内存空间return 0;
}

typedef

  • 声明一个类型名来定义一个已存在的类型
typedef int HAHAHA;//用HAHAHA代替int类型
  • typedef用于结构体
typedef struct{......
} TYPE ;//
TYPE student;//定义结构体变量
TYPE *p;//定义了指向结构体的指针

这篇关于C++杂碎敲过的代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1015107

相关文章

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

使用Spring Cache本地缓存示例代码

《使用SpringCache本地缓存示例代码》缓存是提高应用程序性能的重要手段,通过将频繁访问的数据存储在内存中,可以减少数据库访问次数,从而加速数据读取,:本文主要介绍使用SpringCac... 目录一、Spring Cache简介核心特点:二、基础配置1. 添加依赖2. 启用缓存3. 缓存配置方案方案

MySQL的配置文件详解及实例代码

《MySQL的配置文件详解及实例代码》MySQL的配置文件是服务器运行的重要组成部分,用于设置服务器操作的各种参数,下面:本文主要介绍MySQL配置文件的相关资料,文中通过代码介绍的非常详细,需要... 目录前言一、配置文件结构1.[mysqld]2.[client]3.[mysql]4.[mysqldum

Python多线程实现大文件快速下载的代码实现

《Python多线程实现大文件快速下载的代码实现》在互联网时代,文件下载是日常操作之一,尤其是大文件,然而,网络条件不稳定或带宽有限时,下载速度会变得很慢,本文将介绍如何使用Python实现多线程下载... 目录引言一、多线程下载原理二、python实现多线程下载代码说明:三、实战案例四、注意事项五、总结引

C++ STL-string类底层实现过程

《C++STL-string类底层实现过程》本文实现了一个简易的string类,涵盖动态数组存储、深拷贝机制、迭代器支持、容量调整、字符串修改、运算符重载等功能,模拟标准string核心特性,重点强... 目录实现框架一、默认成员函数1.默认构造函数2.构造函数3.拷贝构造函数(重点)4.赋值运算符重载函数

C++ vector越界问题的完整解决方案

《C++vector越界问题的完整解决方案》在C++开发中,std::vector作为最常用的动态数组容器,其便捷性与性能优势使其成为处理可变长度数据的首选,然而,数组越界访问始终是威胁程序稳定性的... 目录引言一、vector越界的底层原理与危害1.1 越界访问的本质原因1.2 越界访问的实际危害二、基