Menu Close

C语言 – 指针类型

1.NULL指针

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

NULL 指针是一个定义在标准库中的值为零的常量。请看下面的程序:

例1.1 NULL指针的值

#include <stdio.h>
int main()
{
   int *p = NULL; //null pointer
   printf("The value inside variable p is:\n%x",p);
   return 0;
}

在大多数的操作系统上,程序不允许访问地址为 0 的内存,因为该内存是操作系统保留的。然而,内存地址 0 有特别重要的意义,它表明该指针不指向一个可访问的内存位置。但按照惯例,如果指针包含空值(零值),则假定它不指向任何东西。

如需检查一个空指针,您可以使用 if 语句,如下所示:

if(ptr) /* 如果 p 非空,则完成 */
if(!ptr) /* 如果 p 为空,则完成 */

2.VOID 指针

在C编程中,void指针也称为通用指针。 它没有任何标准数据类型。通过使用关键字void创建一个空指针。 它可以用来存储任何变量的地址。

例2.1 void指针的用法 (sizeof 运算符)

#include <stdio.h>
int main()
{
  void *p = NULL; //void pointer
  printf("The size of pointer is:%d\n",sizeof(p));
  return 0;
}

在32位平台下,无论指针的类型是什么, sizeof(指针名)都是 4 ,在 64 位平台下,无论指针的类型是什么, sizeof(指针名)都是 8。

3.WILD 指针

如果未将指针初始化为任何内容,则称其为野指针。 这些类型的指针效率不高,因为它可能指向某些未知的内存位置,这可能会导致程序出现问题,并可能导致程序崩溃。 使用野生指针时,应始终小心。

例3.1野指针的值:

#include <stdio.h>
int main()
{
   int *p; //wild pointer
   printf("\n%d",*p);
   return 0;
}

4.指针

直接和间接访问指针举例分析

/* Declare and initialize an int variable */
int var = 1;
/* Declare a pointer to int */
int *ptr;

int main( void )
{
   /* Initialize ptr to point to var */
   ptr = &var;
   /* Access var directly and indirectly */
   printf("\nDirect access, var = %d", var);
   printf("\nIndirect access, var = %d", *ptr);
  /* Display the address of var two ways */
   printf("\n\nThe address of var = %d", &var);
   printf("\nThe address of var = %d\n", ptr);
  /*change the content of var through pointer*/
  *ptr=48;
  printf("\nIndirect access, var = %d", *ptr);
  return 0;
}

 

 

wer

除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Leave the field below empty!

Posted in C语言教程

Related Posts