1.NULL指针
在变量声明的时候,如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯。赋为 NULL 值的指针被称为空指针。
NULL 指针是一个定义在标准库中的值为零的常量。请看下面的程序:
例1.1 NULL指针的值
1 2 3 4 5 6 7 |
#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 语句,如下所示:
1 2 |
if(ptr) /* 如果 p 非空,则完成 */ if(!ptr) /* 如果 p 为空,则完成 */ |
2.VOID 指针
在C编程中,void指针也称为通用指针。 它没有任何标准数据类型。通过使用关键字void创建一个空指针。 它可以用来存储任何变量的地址。
例2.1 void指针的用法 (sizeof 运算符)
1 2 3 4 5 6 7 |
#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野指针的值:
1 2 3 4 5 6 7 |
#include <stdio.h> int main() { int *p; //wild pointer printf("\n%d",*p); return 0; } |
4.指针
直接和间接访问指针举例分析
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
/* 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
除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!