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