c语言指针总结
指针与数组的使用
#include<stdio.h>
void main(){
int i[4] = {0};
int (*p)[4] ;//定义 指向包含四个元素的一维数组的 指针变量
p = &i;
printf("%d",*p[0]);
}
指向函数的指针
int (*p) (int ,int);
#include<stdio.h>
void main(){
int add(int,int);
int (*p) (int,int);//定义指向 形参为两个int变量 返回值为int的函数 的指针
p=add;
printf("%d",(*p)(3,5));
}
int add(int a,int b)
{
return a+b;
}
返回指针的函数
int *add(int x,int y);//add 为函数名 调用后返回int * 类型的指针
#include<stdio.h>
void main(){
int *add(int,int);//定义返回指针的函数
printf("%d",*(add(3,5)));
}
int *add(int a,int b)
{
int *p;
int c = a+b;
p = &c;
return p;
}
指针数组
int *p[4];
#include<stdio.h>
void main(){
char *name[] = {"wwwwwwwww","lllllllllll","jjjjjjjjjjj"};//定义指针数组
char **p; //定义指向 指针 的指针变量
for(int i=0;i<3;i++){
p = name+i;
printf("%s \n",*p);
}
int **p; //定义指向指针变量的指针
void *p; //void 类型的指针
动态分配内存:
void *malloc (unsigned int size) ; 分配大小为size的空间
p = malloc(100);
void *calloc(unsigned n,unsigned int size)
p = calloc(50,4);
释放内存
void free (void *p)
free(p)
重新分配内存
void *realloc(void *p ,unsigned int size)
realloc(p,120);