🍓个人主页:bit..
🍒系列专栏:Linux(Ubuntu)入门必看 C语言刷题
目录
1.结构体的定义
typedef struct{
fioat p;
int e;
}ploynomial;
typedef struct{
polynomial *elem;
int length;
}sqList;
2.补充数组定义
数组的静态分配
typedef struct{
ElemType data[Maxsize];
int length;
}sqList; //顺序表类型
数组的动态分配
typedef struct{
ElemType *data;
int length;
}sqList; //顺序表类型
sqList;
L,data=(EkemType*)
malloc(sizeof(ElemTyoe) *Maxsize);
malloc(m):开辟m字节的长度地址空间,并返回这段空间的首地址
3.c++的动态存储分配
new 类型T (初值列表)
int *p1=new int;
或 int *p1=new int(10);
功能:
申请用于存放T类型对象的内存空间,并依初值列表赋以初始值结果:
成功:T类型的指针,指向新分配的内存。
失败:O(NULL)
delete:指针p delete p1
功能:
释放指针p所指向的内存,p必须是new操作返回值。
4.c++中的参数传递
1.函数调用 时传送给形参表示的实参必须是与形参三个一致。(类型,个数,顺序)
2.参数传递有两种方式
- 传值方式(参数为 整形,实型,字符型等)
- 传地址:
- 参数为指针变量
- 参数为引用类型
- 参数为数组名
传值;
#include<iosteram.h>
void swap(float m,float n)
{
float temo;
temp=m;
m=n;
n=temp;
}
void main()
{
float a,b;
cin>>a>>b;
swap(a,b);
count<<a<<end1<<b<<endl;
}
传址:
1.形参变化影响实参
#include <iostream.h>
void swap(float *m,float *n)
{
float t;
t=*m;
*m=*n;
*n=t;
}
void main()
{
float a,b,*p1,*p2;
cin>>a>>b;
p1=&a;p2=&b;
swap(p1,p2);
cout<<a<<endl<<b<<endl;
}
2.形参变化不影响实参
#include <iosteram.h>
void swap(float *m,float *n)
{
float *t;
t=m;
m=n;
n=t;
}
void main()
{
float a,b,*p1,*p2;
cin>>a>>b;
p1=&a;
p2=&b;
swap(p1,p2);
cout<<a<<endl<<b<<endl;
}
2.数组名作为参数。
#include <iostream.h>
void sub(char b[])
{
b[]="world";
}
void main(void)
{
char a[10]="hello";
sub(a);
cout<<a<<endl;
}
3.引用类型做参数(c++使用)
引用:它用来给一个对象提供一个替代的名字。
例如:
#include<iosteram.h>
void main()
{
int i=5;
int &j=i; //用的是同一块空间,
i=7;
cout<<"i="<<i<<"j="<<j;
}
//j是一个引用类型,代表i的一个替代名。i值改变时,j的值也跟着改变,所以i=7,j也等于7.
例如
#include<iosteram.h>
void swap(float& m,float& n)
{
float temp; //m与a引用同一块空间
temp=m;
m=n; //n与b引用同一块空间
n=temp;
}
void main()
{
float a,b;
cin>> a>>b;
swap(a,b);
cout<< a <<endl<< b <<endl;
}
1.传递引用给函数与传递指针的效果一样,形参发生变化实参也发生变化。
2.引用类型作形参,在内存中并没有产生实参的副本,它直接对实参操作;而变量做参数,形参与实参就占用不同的存储单元,所以形参的值是实参的副本。因此,当实参传递的数据量较大时,用引用比一般变量传递参数的时间和空间效率都好。