C语言指针

//指针基本概念

#include <stdio.h>
/*
p是一个指向整形变量的指针。
// * --> 取值运算符
& --> 取地址运算符

p == &a
*p == a

*/
int main()
{
int a,b,c,i;
int *p;
int arr[]={1,2,3,4}; //数组的名字代表着起始地址
a=10;b=20;c=30;
p=&a;
//打印abc变量的地址和值
printf("&a=%p &b=%p &c=%p\n",&a,&b,&c);
printf(“a=%d b=%d c=%d\n”,a,b,c);
printf("’*p’=‘a’=%d\n’p’=’&a’=%p\n",*p,p)

//指针的运算

//算数运算
for(i=0;i<4;i++,p++) //这里直接 p++ == p=p+1 ,等于向后移一个元素
printf("%d “,*p);
printf(”\n");

//上面的p++是直接对指针进行了改变,现在还原到第一个元素 负责就是从a[5]开始了。
p=arr;
//还可以通过下标引用。
for(i=0;i<4;i++)
printf("%d ",p[i]);
//指针的差值运算
int *p1,*p2;
p1=arr;
p2=&arr[5];
printf(“等于a[0]~a[5]的距离%d\n”,p2-p1); //p2-p1 == p1+5-p1=5
// a[0]a[1]a[2]a[3]a[4]a[5]
//也可以计算二维数组的差值
int d[4][4];
p1=&d[0][2];
p2=&d[3][1];
printf(“p2-p1 = %d\n”,p2-p1);

//指针变量运算 > < ==
float f1[6];
float *p3=f1,p4=&f1[2];//这里在定义的同时进行初始化,可以把p3=f1 看作俩句 float *p3 和 p3=f1;
printf(“p3 == p4:%d\n”,p3 == f1);
printf(“p4>p3:%d\n”,p4>p3);

double db[]={0,1,2,3,4,5,6,7,8,9},*p5;
for(p5=db;p5<=db+9;p5++) //玩法很多样 ,但是for循环的 p不能改成db,因为db是一个常量,而p是一个变量
printf("%.2lf “,*p5);
printf(”\n");
}

//指针与一维数组

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值