指针间的加减
#include <stdio.h>
int main()
{
int a[3]={1,2,3};
int (*p)[3];
p=a;
printf("%d\n",(*p)[1]);
printf("%d\n",*(*p+1));//*p+1是指加了一个单位 *p为数组的第一个元素的地址
return 0;
}
指针的指针
#include <stdio.h>
int main()
{
int a=111;
int *p=&a;
int **pp=&p;//pp存p地址,即是p的类型,即"int *"// pp是指向指针的指针
printf("%d %d\n",*pp,&a);//*pp=p=&a
printf("%d %d\n",**pp,a);//*(*pp)=*p=a
return 0;
}
利用指针来储存不定个数的数字
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,i,sum=0;
int *grade;
scanf("%d",&n);
//malloc 是取一段储存用于存放grade
if( grade=(*int)malloc(sizeof(int)*n)==NULL)//占用内存
//NULL指的是空值、无值。
exit(-1);//exit(x)(x不为0)都表示异常退出
//exit(0)表示正常退出
for(i=0;i<n;i++)
scanf("%d",&grade[i]);
for(i=0;i<n;i++)
sum+=grade[i];
printf("%.2f\n",(float)sum/n);
free(grade);//归还内存
return 0;
}
网友评论