什么是指针?
指针在C编程中非常重要,因为它们使你可以轻松地处理内存位置。
指针是数组,字符串以及其他数据结构和算法的基础。
指针是一个变量,其中包含另一个变量的地址。换句话说,它“指向”分配给变量的位置,并且可以间接访问该变量。
指针使用*符号声明,语法如下:
指针数据类型 *标识符
实际的指针数据类型是十六进制数,但是在声明指针时,必须指出它将指向的数据类型。
星号 * 声明一个指针,并应出现在用于指针变量的标识符旁边。
以下程序演示了变量,指针和地址:
int j = 63;
int *p = NULL;
p = &j;
printf("The address of j is %x\n", &j);
printf("p contains address %x\n", p);
printf("The value of j is %d\n", j);
printf("p is pointing to the value %d\n", *p);
关于此程序,需要注意以下几点:
在将指针分配给有效位置之前,应将其初始化为NULL。
可以使用&符号为指针分配变量的地址。
要查看指针指向的内容,请再次使用 *,如 *p 中所示。
在这种情况下,* 被称为间接或取消引用运算符。该过程称为取消引用。
程序输出类似于:
The address of j is ff3652cc
p contains address ff3652cc
The value of j is 63
p is pointing to the value 63
一些算法使用指向指针的指针。这种类型的变量声明使用**,并且可以分配另一个指针的地址,如下所示:
int x = 12;
int *p = NULL
int **ptr = NULL;
p = &x;
ptr = &p;
【选词填空】声明指向var变量的指针:
int var = 42;
int ptr = var;
#
@
&
*
表达式中的指针
指针可以与任何变量一样在表达式中使用。算术运算符可以应用于指针所指向的任何对象。
例如:
int x = 5;
int y;
int *p = NULL;
p = &x;
y = *p + 2; /* y 被赋予 7 */
y += *p; /* y 被赋予 12 */
*p = y; /* x 被赋予 12 */
(*p)++; /* x 增加到 13 */
printf("p指向值 %d\n", *p);
运行结果:
p指向值 13
注意,++运算符需要括号才能增加所指向的值。使用--运算符时也是如此。
【单选题】指针适用于哪个?
指针存储变量的值
指针可以与任何变量一样在表达式中使用。
指针是无用的,使程序员陷入噩梦