/******************************************************************************
Welcome to GDB Online.
GDB online is an online compiler and debugger tool for C, C++, Python, Java, PHP, Ruby, Perl,
C#, VB, Swift, Pascal, Fortran, Haskell, Objective-C, Assembly, HTML, CSS, JS, SQLite, Prolog.
Code, Compile, Run and Debug online from anywhere in world.
*******************************************************************************/
#include <stdio.h>
const int Max=3;
int main()
{
int var=20;
int *ptr=NULL;
int *ip;
ip=&var;
printf("/*-----指针的初使用-----*/\n");
printf("变量var地址:%p\n",&var);
printf("ip存储的地址:%p\n",ip);
printf("指针ip存储的值:%d\n",*ip);
printf("prt的地址是:%p\n",ptr);
//定义一个数组
int arr[]={10,100,200};
printf("/*-----实现递增一个指针-----*/\n");
/*指针递增变量*/
int i;
int *apr;
apr=arr; //指针中的数组地址
for(i=0;i<Max;i++)
{
printf("存储地址:arr[%d]=%x\n",i,apr);
printf("存储值:arr[%d]=%d\n",i,*apr);
/*移动到下一个位置*/
apr++;
}
printf("/*-----实现递减一个指针-----*/\n");
/*指针递减变量*/
int j;
int *spr;
spr=&arr[Max-1]; //指针中最后一个元素的地址
for(j=Max;j>0;j--)
{
printf("存储地址:arr[%d]=%x\n",j-1,spr);
printf("存储值:arr[%d]=%d\n",j-1,*spr);
spr--;//移动到下一个位置
}
printf("/*-----指针的比较------*/\n");
int *cpr;
int k;
cpr=arr; //指针中第一个元素的地址
k=0;
while(cpr<=&arr[Max-1])
{
printf("存储地址:arr[%d]=%x\n",k,cpr);
printf("存储值:arr[%d]=%d\n",k,*cpr);
//指向上一个位置
cpr++;
i++;
}
printf("/*-----指针数组-----*/\n");
int m;
int *dpr[Max];
for(m=0;m<Max;m++)
{
dpr[m]=&arr[m];
}
for(m=0;m<Max;m++)
{
printf("数组元素的值arr[%d]=%d\n",m,*dpr[m]);
}
printf("/*-----指向指针的指针-----*/\n");
int n;
int *adpr;
int **addpr;
n=3000;
adpr=&n; //获取n的地址
addpr=&adpr; //使用取地址运算符获取adpr的地址
printf("n的值:n=%d\n",n);
printf("指针adpr对应的值:*adpr=%d\n",*adpr);
printf("指向指针的指针**addpr对应的值:**addpr=%d\n",**addpr);
return 0;
}