1.用户输入时是以回车键(’\n')结束输入,但在C和C++中,字符串内部使用('\0')来表示字符串的结束。getline
函数从输入流中读取一行文本,直到遇到换行符(\n
),然后将其替换为字符串终止符(\0
),确保字符串能够正确处理。
2.malloc函数
头文件:#include <stdlib.h>
调用:int* arr=(int*)malloc(n*sizeof(int));
n*sizeof(int):表示需要分配n个int类型的内存空间
int*将malloc返回的void指针转换为int*类型
检查返回值:
if(arr==NULL){
}
使用分配的内存:
for(int i=0;i<n;i++){
scanf("%d",&arr[i]);
}
释放内存:
free(arr);
3.指针-指针
指针-指针得到的是两个元素之间的个数
指针和指针相减的前提是:
两个指针指向同一块空间。
4.顺序表
#include<iostream>
#include<cstdlib>
using namespace std;
#define maxsize 100
struct sqlist{
int n;
int date[maxsize];
};
int find(sqlist l,int x){
int i;
for(i=0;i<l.n;i++){
if(l.date[i]>x){
return i;
}
}
return i;
}
void insert(sqlist&l,int y){
int p,i;
p=find(l,y);
for(i=l.n-1;i>=p;i--){
l.date[i+1]=l.date[i];
}
l.date[p]=y;
l.n++;
}
int find1(sqlist &l,int x){
for(int i=0;i<=l.n;i++){
if(l.date[i]==x){
return i;
}
}
return -1;
}
void insert1(sqlist&l,int p,int x){
for(int i=l.n;i>=p;i--){
l.date[i+1]=l.date[i];
}
l.date[p]=x;
l.n++;
}
void deletes(sqlist&l,int g){
for(int i=g;i<l.n-1;i++){
l.date[i]=l.date[i+1];
}
l.n--;
}
int main(){
sqlist l;
int n;
cin>>n;
l.n=n;
for(int i=0;i<n;i++){
l.date[i]=i;
}
insert(l,15);
for(int i=0;i<=n;i++){
cout<<l.date[i]<<" ";
}
cout<<endl;
int lll=find1(l,6);
cout<<lll<<endl;
insert1(l,4,6);
for(int i=0;i<l.n;i++){
cout<<l.date[i]<<" ";
}
cout<<endl;
deletes(l,4);
for(int i=0;i<l.n;i++){
cout<<l.date[i]<<" ";
}
return 0;
}