指针

指针间的加减

#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;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。