印度程序员指针部分部分代码

发布时间 2023-11-23 20:16:10作者: lulixiu
#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;
}