1.指向指针的指针 int* *a;
2.包含指针的数组 int* a[10];
3.指向数组的指针 int(*a)[10];
4.指向函数的指针 int(*a)(int);---*a代表函数名
5.函数指针数组(数组里的指针,指向函数) int(*a[10])(int)
回调函数:
例如:int (*p[4])(int,int)={add,sub,mul,div};
int i=0;
for(i=0;i<4;i++)
{
int result =p[i](a,b);
printf("%d\n",result);
}
malloc()函数<stdlib头文件>:在堆区开拓一块空间,malloc(开拓空间大小):使用方法:定义一个指针,用指针保存他:int *a=malloc(100);
关于NULL:为零号空间,不能赋值
赋予NULL后,更改赋予的值
void chang(int* *c)
{
*c=(char *)malloc(10)";
}
int main(void)
{
int *a=NULL;
chang(&a);
strcpy(*a,"hello");
}
结构体与共用体
struct (结构体类型名)//描述对象
{
描述的特征: 特征1;
特征2;
......;
};//定义了一个“数据类型”
例如:struct student
{
char name[20];
unsigned char age;
float score;
};
定义后,struct student 作为使用方式,和int 类似。
如 struct student s ={“tom”,“20”,"59".5}---定义一个学生的特征
打印 “.”//结构体成员运算符
printf("%s\n",s.name);即可打印出tom
作用:描述原先基本数据类型不好描述的复杂数据类型
结构体访问成员的方式:
普通输出:printf("%s\n",s.name);
数组输出:printf("%s\n",s->name);
结构体大小计算
每次计算4个字节,按顺序放入,当放不下的时候,跳到下一次四字节。
64位默认为8字节对齐