首页 > 系统相关 >string和初学指针和动态内存分配

string和初学指针和动态内存分配

时间:2024-10-29 23:20:27浏览次数:3  
标签:const string char 地址 初学 动态内存 字符串 指针

strcmp:

原型定义于:<string.h>

int strcmp(const char *str1,const char* str2)

比较的标准是ASCII

从第一个字符开始比,直到遇到不同的字符或者返回NULL(0)

若STR1[I]>STR2[I],返回 1

若STR1[I]<STR2[I],返回 -1

若STR1[I]=STR2[I],返回 0

strcpy:

原型定义于<string.h>
常用于字符串内容的交换

strcpy(char* dest//要足够大,const char *str)

利用strcpy,交换二维数组的行;

--------------------分割线-------------------

栈区:局部变量和函数的形式参数

堆区:动态内存分配

静态区:全局变量和静态变量

--------------------分割线-------------------

指针:
概念:1.指针是变量,用来存放地址

2.大小固定,4/8字节(32位/64位)

3.指针有类型,指针类型决定了指针的+-步长

字符指针

*说明,p是指针,要储存一个地址。

arr是指针p储存的地址;

char说明p储存的地址存放字符类型;

将“abc“看作一个常量字符串,你不能通过改变指针来改变这个常量字符串

(vs2022中加const就说明了这一点)

p储存的是这个常量字符串的地址()

【ps:printf(”%s",p)=printf(p)约等于puts(p)//puts自带\n】

上图说明

“abc”该常量字符串的地址只有一个,p1和p2在两个不同的内存空间储存了同一个地址

数组指针

上图中,

*说明p是指针

【】说明p是数组指针,可以存放多个地址

如上图

*p【i】为arr1【0】,arr2【0】,arr3【0】

*(p【i】+j)为arr1【0到2】,arr2【0到2】,arr3【0到2】

*p=arr,

*p[i]=arr[i]=*(p+1)=*(arr+i)

--------------------分割线-------------------

动态内存分配

用<stdlib.h>的函数malloc,calloc,realloc,free

malloc

malloc申请100个大小转int数据的动态内存

并把第一个内存空间的地址存入指针p中

free(p)意思是归还借用的空间

除此,可能由于申请的空间太大超过动态内存空间,导致开辟失败,返回NULL

所以开辟后务必判断是否开辟成功

【ps:errno显示错误,strerror()将错误翻译为字符串】

最后要清空p的值

calloc将在malloc基础上将内存赋值为0(格式不一样)

realloc(扩大或缩小申请的动态内存空间)

修改

申请空间

标签:const,string,char,地址,初学,动态内存,字符串,指针
From: https://blog.csdn.net/2401_87328658/article/details/143350846

相关文章

  • 【JavaSE】认识String类,了解,进阶到熟练掌握
    #1024程序员节|征文#下面就让博主带领大家一起解决心中关于String类的疑问吧~~~1.字符串构造:第一种和第二种(有一定的区别,在常量池上)publicstaticvoidmain(String[]args){//使用常量串构造Strings1="hello";System.out.println(s1);//直接newString对象S......
  • Java:String类(超详解!)
    一.常用方法......
  • Java学习第一天《String字符串的使用》
    1.获取字符最后一次出现的位置(函数返回值为int类型)                字符串的变量名.lastIndexOf(Stringstr);                               查找a最后出现的位置               System.out.print("请......
  • 【c++篇】:探索c++中的std::string类--掌握字符串处理的精髓
    ✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨✨个人主页:余辉zmh–CSDN博客✨文章所属专栏:c++篇–CSDN博客文章目录前言一.`std::string`对象的创建二.`std::string`对象的访问三.`std::string`对象的容量四.`std::string`对......
  • 字符串谁更快?String vs StringBuilder大比拼
    在Java中处理字符串,String和StringBuilder都是常用的类,它们的区别有点像在厨房里选择不同的工具:String就像是一把只能用一次的纸杯,改一次就得换新的;而StringBuilder就像一只可以反复使用的水杯,随时可以修改。这两个类各有优缺点,咱们一起来看看它们的区别和用法吧。String......
  • List<Map<String,Object>> 属性获取
    publicstaticvoidmain(String[]args){//1.数据准备List<Map<String,Object>>list=newArrayList<>();Map<String,Object>map=newHashMap<>();map.put("name","songwp");......
  • CF1158B The minimal unique substring
    这题是有迹可循的!下面从一个思考者的角度讲述解题方法。首先这两条限制很奇怪,但感觉都是很强的性质。所以这道题光想入手都是比较难的,先考虑怎么入手。第二条限制相对简单,先考虑第二条限制。我们注意到,如果一个串的数字全是\(1\),显然可以满足限制一。那限制二我们考虑将一个\(......
  • JVM(方法区包含常量池及StringTable)
    方法区(此图省略了栈等结构,JVM结构详细图在JVM简介中,方法区中常量池应为运行时常量池)定义方法区(MethodArea)是Java虚拟机(JVM)的一部分,它与Java堆一样,是被JVM实例中所有线程共享的区域。方法区在JVM启动时创建,可以选择固定大小或允许动态扩展。这个区域的大小直接影响到系统能够......
  • Java基于String类的题
    题目:字符串中的第一个唯一字符链接:387.字符串中的第一个唯一字符-力扣(LeetCode)给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1 。示例1:输入:s="leetcode"输出:0示例2:输入:s="loveleetcode"输出:2示例3:......
  • 在绝大多数场景中,使用String和&str是不是就足够了?
    是的,在绝大多数场景中,String和&str就足够了。Rust的String和&str已经涵盖了大部分字符串处理需求,以下是它们的常用场景和原因:1.String和&str的适用场景String:适合需要拥有所有权、可变、动态增长的字符串场景。例如,从用户输入中获取字符串、从文件读取内容、对......