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