指针和数组(笔记)

一、指针

1.指针的初始化是用&操作符完成的,它用于产生操作数的内存地址。

2.通过一个指针访问他所指向的地址的过程称为间接访问(indirection)或者解引用指针。这个用于执行间接访问的操作符是单目操作符*。

3.如果变量是静态的,他会被初始化为0;但是如果变量是自动的,它根本不会被初始化。

4.对一个NULL指针进行解引用操作是非法的。因此在对指针进行解引用操作之前,你首先必须确保它并非NULL指针。

二、数组

1.在C中,在几乎所有使用数组名的表达式中,数组名的值是一个指针常量,也就是数组第一个元素的地址,它的类型取决于数组元素的类型。

三、数组和指针

  两个声明:

  int a[5];

  int *b;

  声明一个数组时,编译器将根据声明所指定的元素数量为数组保留内存空间,然后,在创建数组名,它的值是一个常量,指向这段空间的起始位置。声明一个指针变量时,编译器只为指针本身保留内存空间,它并不为任何整型值分配内存空间。而且,指针变量并未初始化为指向任何现有的内存空间,如果它是一个自动变量,它根本不会被初始化。

  上述声明之后,表达式*a是完全合法的,但表达式*b却是非法的。*b将访问内存中某个不确定的位置,或者导致程序终止。另一方面,表达式b++可以通过编译,但a++却不行,因为a的值是个常量。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。