#include"stdio.h"
int main()
{
int x=5;
int *p=&x;
*p=6;//可以不改变x的值来修改输出
int* (*q)=&p;//即p=*q
int*(*(*r))=&q;//即r=*p
printf("%d\n",*p);
printf("%d\n",*q);
printf("%d\n",**q);//即*p
printf("%d\n",**r);//即*q
printf("%d\n",***r);//即*p
***r=10;//和第三行一样的功能
printf("x=%d\n",x);
**q=*p+2;//即x=x+2
printf("x=%d\n",x);
return 0;
}
运算
#include"stdio.h"
void f(int *p)
{
*p=*p+1;
}
int main()
{
int a=10;
f(&a);//没有取地址就不会输出任何东西
printf("a=%d",a);
return 0;
}
relloc
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n,i;
scanf("%d",&n);
int* a=(int*)malloc(n*sizeof(int));
for(i=0;i<n;i++)
a[i]=i+1;
int* b=(int*)realloc(a,2*n*sizeof(int));//b会申请到两倍的空间
printf("prev block address=%d,new address=%d\n",a,b);
for(i=0;i<2*n;i++)
printf("%d\n",b[i]);
}
加减法
#include<stdio.h>
int add(int a,int b)
{
return a+b;
}
int main()
{
int(*p)(int,int);
p=&add;//p=add也行
int c=(*p)(2,3);
printf("%d",c);
return 0;
}
冒泡排序
#include"stdio.h"
int compare(int a,int b)
{
if(a>b)
return 1;
else
return -1;
}
void p(int* a,int n,int(*compare)(int,int))
{
int i,j,temp;
for(i=0;i<n;i++)
for(j=0;j<n-1;j++)
{
if(compare(a[j],a[j+1])>0)
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
int main()
{
int i,a[]={3,2,1,5,6,4};
p(a,6,compare);
for(i=0;i<6;i++)
printf("%d ",a[i]);
return 0;
}
标签:compare,main,return,int,程序员,printf,include,部分,指针
From: https://www.cnblogs.com/lulixiu1999/p/17852401.html