指针是一种特殊类型的变量,用于存储另一个变量的内存地址。它在编程中扮演着重要角色,尤其是在C和C++等低级语言中。
指针变量的基本形式是类型名 *指针变量;
,例如:int *a;
。这里的星号(*)表示该变量是指向特定类型的指针,而不是指向一个具体的值。因此,a
是一个指向整型数据的指针,而*a
则是通过指针访问的实际整数值。
指针变量的值是另一个变量的内存地址。通过使用间接访问操作符(*),我们可以获取或修改指针所指向的内存位置中的值。例如:*a
的结果类型是int
,这表明a
是一个指向整数的指针。
int *a;
警告:C语言是一种自由形式的语言,容易让人误以为星号应靠近类型名。例如:int* a;
虽然与int *a;
具有相同的意义,但这种写法可能导致误解。特别是当声明多个变量时,如:int* b, c, d;
,只有b
被声明为指针,而c
和d
只是普通的整型变量。正确的声明方式应为:int *b, *c, *d;
。
在声明指针变量时,还可以为其指定初始值。例如:char *message = "Hello world";
将message
声明为指向字符的指针,并用字符串常量的第一个字符地址进行初始化。
char *message = "Hello world";
警告:需要注意的是,这种声明容易引起误解,似乎初始值赋给了表达式*message
,但实际上它是赋给message
本身。换句话说,上述声明等同于:
char *message;
message = "Hello world";