数据结构与算法
前章
指针
指针:是保存其他变量地址的一个变量
& 取变量地址
* 取地址的值
* + 变量的地址 = 地址的值
& + 变量名 = 变量的地址
数组名本身就是指向首元素的指针
指针和函数
//指针作为函数的参数和返回值
练习: 交换 a b两值(a<b) 使用四种方法
法1 :位运算
void wei(int a,int b){
a = a ^ b;
b = a ^ b;
c = a ^ b;
}
法2:加法
void wei(int a,int b){
a = a+b;
b = a-b;
a = a-b;
}
法3:除法
void wei(int a,int b){
a = a*b;
b = a/b;
a = a/b;
}
法4: 指针
#include<studio.h>
void aswd(int *p1,int *p2);
main{
int a = 10;
int b = 20;
int *p1 = &a;
int *p2 = &b;
aswd(p1,p2);
}
void aswd(int *p1,int *p2){
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
结构体
结构体: 将基本类型和派生类型组合起来的复杂类型。
语法: struct 结构体名{
成员列表;
};
struct User{
char name[10];
char username[10];
char age[10];
}
构建对象
struct 结构体名 结构体变量 ={ 成员列表的值};
//赋值
struct User user ={”张三“,”12“,”123“};
//得到值
printf("%s",user.name); //字符串 %s
printf("%d",user.age); //整数 %d 小数 %f
结构体变量
1. 随时使用随时定义
struct 结构体名 结构体变量 ={
成员列表的值};
2. 在创建结构体的时候就定义
struct User{
char name;
char username;
char age;
}user1,user2;
user1 ={
”张三“,”12“,”123“};
3.匿名结构体
struct{
char name;
char username;
char age;
}user1,user2;
user1 ={
”张三“,”12“,”123“};
4.一个结构体变量作为另一个结构体的属性
typedef char *Sting[10];
struct Car{
String color;
成员;
};
struct Person{
struct Car car;
}p;
调用 p.car.color;
结构体数组
typedef char *Sting[10];
struct Catr{
String color;
};
struct Car cars[] ={
{
"yello",5},
{
"green",3},
{
"red",20}
};
int length = sizeof(cars)/sizeof(struct Car);
for(int i=0;i<length;i++){
printf("%sm,%d",cars[i].color,cars[i].age)
}
结构体指针
int a =10;
int *p;
p = &a;
struct Car car ={
"白色",3};
struct Car