第十一到十七节

第十一节 一维数组、数组的底层原理

  • 数组
  1. 数组是用来存储多个数据的
  2. 越界:我声明的数组大小不能比我存入的数据量小
int srr[10]={1,2,3};
  • 下标法:可以通过下标对数组进行操作
cout << arr[2] <<endl ;
  • 遍历
for (int = 0; i < 10 ; ++i){
cout << arr[i] <<endl ;
}
  • 硬盘 != 内存

  • 内存里面有一个一个的内存单元,每个内存单元有8位,一个字节

  • 内存地址:每一个内存单元都有一个地址

  • 取址符:把某个对象的地址取出来

    sacnf(,&a);
    
    cout << &arr[] << endl ;
    
  • 数组本身的首地址 == 数组 的第一个元素的首地址

  • 首地址 + 0 * 4 == 数组 的第一个元素的首地址

第十二节 全局和局部变量、数组的补充、动态开辟数组

  • 越界:下标越界,大小越界。

  • 数组的三种初始化和初始化值为0

    1. 没有赋值的元素都是0
    2. 满打满算
    3. 自定大小初始化
int arr[] = {1,2,3,4,5,6,7};
  • 初始化值为0

    int arr[10] = {0};//把所有的元素都赋值为0
    
  • 全局变量,局部变量

    1. 全局变量:一旦定义,在该.cpp文件里面,所有函数都可以调用,默认初始化

    2. 局部变量:初始化的值是随机的值

  • 全局变量和局部变量重名,会调用局部变量

  • 动态定义数组大小

int n;
cin >> n;
//new 操作符 动态申请空间并创建出来
int *arr = new int [n];
//*arr int* 叫做指针变量的前提声明
for(int i = 0;i < n ;++i){
cin >> arr[i];
}

第十三节 二维数组、多维数组

  • 多维数组
  • 最典型是二维数组
int arr[4][2] = {{,1,2},{3,4},{5,6},{7,8}};
//下标法
cout << arr[1][1] << endl;
//遍历
for(int i = 0; i < 4; ++i){
    for(int j = 0;j < 2;++j){
        cout << arr[i][j] <<endl;
    }
}
  • 自定义数组长度大小

    int m,n;
    cin >> m >> n;
    int** brr =new int* [m];//小数组个数
    for(int i = 0;i < m;++i){
    brr[i] = new int[n];//brr的类型是int*
    }
    for(int i = 0;i < m; ++i){
    for(int j = 0;j < 0;++j){
    cin >> brr[i][j];
    }
    }
    cout <<"----------------"endl;
    for(int i=0;i < m;++i){
    for(int j < 0;j < n;++j){
    cout << brr[i][j] << endl;
    }
    }
    

第十四节 C语言字符串

  • 字符串:指的是一组或者一串字符

  • 字符数组必须以\0作为结束标识符来声明

    字符数组的初始化方式

    char str[] = "hello world";
    cout << str << endl
    
  • 如果以这种方式初始化,字

    符数组会默认在结尾加\0

    字符数组的录入

    //第一种
    char str [1024];
    scanf("%s",str); 
    cout << str << endl;
    //第二种
    char str[1024];
    cin >> str ;
    cout << str << endl; 
    //第三种 是为了录入空格
    char str[1024];
    gets (str);
    cout << str endl ;
    //c++中的
    char str[1024];
    cin.getline(str,1024);
    cout << str <<endl;
    //C语言
    char str[1024];
    fgets(str,1024,stdin);
    //stdin 它 就是 你要读取的 输入文件
    cout << str + 2 <<  endl
    //字符数组可以根据内存地址直接从头到尾输出
    

    第十五节 string.h

  • string () 字符串的长度

  • 它不接收\0

    char str[1024];
    fgets(str,1024,stdin);
    //如果你没有输入的部分,我就全部初始化为\0
    //然后 fgets() 不光能录入空格 还能录入回车 \n
    cout << strlen(str) <<  endl;
    
  • strcmp () 字符串比较大小

#include <iostream>

using namespace std;

int main (viod){
    char a[] = "231";
    char b[] = "23";
    cout << strcmp(a,b) << endl ;
    //函数的返回值最后是用函数本身代表的
return 0;
}
  • 字符串的拼接 strcat()

    #include <iostream>
    
    using namespace std ;
    
    int main (viod){
        char a[] = "hello ";
        char b[] = "world";
        strcat(a,b);
        //stract 有扩容的功能
        //直接把b加到a后面
        cout << a << endl;
        
    
    return 0;
    }
    

十六、十七节 c++字符串string

  • string.h C语言的字符数组
  • string c++字符数组库
#include <iostream>
#include <string>

using namespace std ;

int main (void){
    //字符串初始化的几种方式
    string arr = "hello world";
    
    string s(5,'a');
    //把a重复五次拼到一起,然后存储到s
    string s1("three");
    
    cout << s1 <<endl;
    
    cout << s << endl;
    
    cout << arr << endl;
    
    return 0;
  


}
  • 拼接
  • 字符数组 strcat、
  • 字符串 + 加号
#include <iostream>
#include <string>

using namespace std;

int main(void){
    string a = "hello";
    a = "pre " + a + "world";
        cout << a << endl;  
return 0;
}
  • string 输入输出
#include <iostream>
#include <string>

int main(void){
    string str ;
    getline(cin,str);
    //cin 输入流  
    //可以读入空格
    cout << str << endl ;
    cout << str.length() << endl; 
    //str.length()和str.size()功能一样都是读取字符串个数
    cout << str.empty() <<endl ;
    //读取字符串是否为空

}
  • 更改函数

  • str.replcea(输入字符串的下标位置,输入字符串的替换位数,“替换字符串”,替换字符串的起始位置,替换字符串提取的个数)

    #include <iostream>
    #include <string>
    
    using namespace std ;
    
    int main (void){
    	string str ;
    	getline (cin,str);
    	str.replace(2,3,"ABCD",2,2);
    	cout << str << endl ;
    	return 0 ;
    }
    
  • 运行结果

在这里插入图片描述

  • 删除函数
  • str.erase(起始位置,删除长度(如果不写默认从起始位置以后都删除));
  • //string 就是个特殊的数据结构,STL容器当中一员
#include <iostream>
#include <string>

using namespace std ;

int main (void){
	string str ;
	getline (cin,str);
	str.erase(3,2);//从第三位开始,删除2位
	cout << str << endl ;
	return 0 ;
}
  • 运行结果

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Sx2WG8SO-1665970663814)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20221015175222698.png)]

  • 下标法

  • string的底层原理还是字符数组

  • 字符数组和string的转换

    char hh[] = "hhhhh";
    string ssss = hh ;
    //字符数组 转变为 string 类型
    //string 类型 是没有办法直接转变位字符数组,他只能 转换为 const char*
    //类型 后面带有* 就是指针变量
    char* p = (char*)ssss.c_str();
    
    cout << p << endl ;
    
    return 0 ;
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值