初识C指针

今天药忘吃喽~ 2023-07-14 08:13 147阅读 0赞

什么是指针?
  指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,对其进行声明。指针变量声明的一般形式为:

  1. type *var-name;
  2. int *a; /* 一个整型的指针 */
  3. double *b; /* 一个 double 型的指针 */
  4. float *c; /* 一个浮点型的指针 */
  5. char *ch; /* 一个字符型的指针 */

所有实际数据类型,不管是整型、浮点型、字符型,还是其他的数据类型,对应指针的值的类型都是一样的,都是一个代表内存地址的长的十六进制数。
不同数据类型的指针之间唯一的不同是,指针所指向的变量或常量的数据类型不同。

如何使用指针?
  使用指针时会频繁进行以下几个操作:定义一个指针变量、把变量地址赋值给指针、访问指针变量中可用地址的值。这些是通过使用一元运算符 来返回位于操作数所指定地址的变量的值。下面是一些实例:

  1. #include <stdio.h>
  2. int main ()
  3. {
  4. int var = 20; /* 实际变量的声明 */
  5. int *ip; /* 指针变量的声明 */
  6. ip = &var; /* 在指针变量中存储 var 的地址 */
  7. printf("Address of var variable: %p\n", &var ); /* 在指针变量中存储的地址 */
  8. printf("Address stored in ip variable: %p\n", ip ); /* 使用指针访问值 */
  9. printf("Value of *ip variable: %d\n", *ip );
  10. return 0;
  11. }

当上面的代码被编译和执行时,它会产生下列结果:

  1. 123Address of var variable: bffd8b3c
  2. Address stored in ip variable: bffd8b3c
  3. Value of *ip variable: 20

C语言中的空指针(NULL)
  在变量声明的时候,如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯。赋为 NULL 值的指针被称为空指针。

NULL 指针是一个定义在标准库中的值为零的常量。请看下面的程序:

  1. #include <stdio.h>
  2. int main ()
  3. {
  4. int *p = NULL;
  5. printf("p 的地址是 %p\n", p );
  6. return 0;
  7. }

当上面的代码被编译和执行时,它会产生下列结果:

  1. p的地址是 0x0

  在大多数的操作系统上,程序不允许访问地址为 0 的内存,因为该内存是操作系统保留的。然而,内存地址 0 有特别重要的意义,它表明该指针不指向一个可访问的内存位置。但按照惯例,如果指针包含空值(零值),则假定它不指向任何东西。 如需检查一个空指针,您可以使用 if 语句,如下所示:

  1. if(p) /* 如果 p 非空,则完成 */
  2. if(!p) /* 如果 p 为空,则完成 */

发表评论

表情:
评论列表 (有 0 条评论,147人围观)

还没有评论,来说两句吧...

相关阅读

    相关 C生万物之指针

    C语言的核心之一就是指针。今天我们先初步的了解指针,那么首先探讨一下为什么会有指针? 如同门牌号,宿舍号,等等编号可以让我们准确找到。 内存 要知道,计算机的程序都是在内

    相关 C指针

    什么是指针?   指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,对其进行声明。指针变量声明的

    相关 C语言-指针

    有人说:指针是C语言最大的优势之一 也有人说:指针是C语言的灵魂 但总的来说,不掌握指针就是没有掌握C语言的精华。 说了这么多废话,我们来看看指针到底是什么吧。

    相关 C指针(3)

    指针与数组 指针变量除了可以对其引用的地址的内容进行运算外,其本身也可以进行运算。指针是内存中的一个地址,对指针本身的支算只能是指针在内存中位置的改变,即指针可以进行加

    相关 C指针(2)

    当在程序中定义一个变量时,系统就在内存中为该变量分配一个大小合适的存储空间,这个存储空间的大小由变量的类型决定,一个int型变量占2个字节,一个float的变量占4个字节,数组

    相关 C 指针(1)

    计算机为声明的变量分配内存的形式:在程序代码中,使用变量名来引用这块内存,当程序编译后执行时,计算机就使用内存位置的地址来引用. 指针也是变量,只是它存储的内容是其它变量的内