C语言第三周,指针

一、指针:

指针是一个变量,其值为另一个变量的地址,即,内存的位置的直接地址。就像其他变量一样,必须在使用指针储存其他变量地址之前,对其进行声明。

指针可以简化一些C编程任务的执行,动态内存的分配没有指针的话是无法完成的;所以学好指针是很有必要的。

每一个变量都有一个内存位置,每个内存都可以用&取出地址;

#include <stdio.h>

int main ()
{
   int  var1;
   char var2[10];

   printf("var1 变量的地址: %x\n", &var1  );
   printf("var2 变量的地址: %x\n", &var2  );

   return 0;
}
指针的类型有:

int    *ip;    /* 一个整型的指针 */
double *dp;    /* 一个 double 型的指针 */
float  *fp;    /* 一个浮点型的指针 */
char   *ch     /* 一个字符型的指针 */
指针的数据的值都是实际数据类型,都是一个代表内存地址的十六进制数,不同类型的指针指向的变量或常量的数据类型不一样。

NULL指针:

在声明变量的时候,如果没有确切的地址可以赋值,为指针变量赋一个NULL值是一个良好的编程习惯。赋为NULL值的指针被称为空指针。

在大多数的操作系统上,程序不允许访问地址为0的内存,因为内存是操作系统保留。然而,内存地址0有特别意义,表明指针不指向一个可访问的内存位置。


指针可以用逻辑关系运算符进行运算和比较

指向指针的指针

指向指针的指针是一种多级间接寻址的方式,或者说是一个指针链。通常,一个指针包含一个变量的地址。当我们定义一个指向指针的指针时,第一个指针包含了第二个指针的地址,第二个指针指向包含实际值得位置。

指针数组中的每一个元素均为指针,即有诸形如“*ptr_array”的指针。

指针数组中的元素亦可以表示为“*(*(ptr_array+i))”。又因为“()”的优先级较“*”高,且“*”是右结合的,因此可以写作**(ptr_array+i)。

由于数组元素均为指针,因此ptr_array是指第i+1个元素的指针。



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值