美文网首页C语言基础学习
《C语言16—指针数组》

《C语言16—指针数组》

作者: 竹予青青 | 来源:发表于2019-03-21 23:36 被阅读30次

2019年3月21日星期四 阴

(声明:理论知识部分来自菜鸟教程网站!)
今日学习内容:
(4.2)C 指针数组
在说解指针数组的概念之前,先来看一个实例,它用到了一个由 3 个整数组成的数组:
实例

#include <stdio.h>
 
const int MAX = 3;
 
int main ()
{
   int  var[] = {10, 100, 200};
   int i;
 
   for (i = 0; i < MAX; i++)
   {
      printf("Value of var[%d] = %d\n", i, var[i] );
   }
   return 0;
}

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

Value of var[0] = 10
Value of var[1] = 100
Value of var[2] = 200

可能有一种情况,我们想要让数组存储指向 int 或 char 或其他数据类型的指针。下面是一个指向整数的指针数组的声明:

int *ptr[MAX];

在这里,把 ptr 声明为一个数组,由 MAX 个整数指针组成。因此,ptr 中的每个元素,都是一个指向 int 值的指针。下面的实例用到了三个整数,它们将存储在一个指针数组中,如下所示:

实例

#include <stdio.h>
 
const int MAX = 3;
 
int main ()
{
   int  var[] = {10, 100, 200};
   int i, *ptr[MAX];
 
   for ( i = 0; i < MAX; i++)
   {
      ptr[i] = &var[i]; /* 赋值为整数的地址 */
   }
   for ( i = 0; i < MAX; i++)
   {
      printf("Value of var[%d] = %d\n", i, *ptr[i] );
   }
   return 0;
}

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

Value of var[0] = 10
Value of var[1] = 100
Value of var[2] = 200

您也可以用一个指向字符的指针数组来存储一个字符串列表,如下:
实例

#include <stdio.h>
 
const int MAX = 4;
 
int main ()
{
   const char *names[] = {
                   "Zara Ali",
                   "Hina Ali",
                   "Nuha Ali",
                   "Sara Ali",
   };
   int i = 0;
 
   for ( i = 0; i < MAX; i++)
   {
      printf("Value of names[%d] = %s\n", i, names[i] );
   }
   return 0;
}

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

Value of names[0] = Zara Ali
Value of names[1] = Hina Ali
Value of names[2] = Nuha Ali
Value of names[3] = Sara Ali

(这里是将字符数组的首地址赋给指针数组了。。(还没完全搞懂,之后再说))

(4.3)C 指向指针的指针
指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链。通常,一个指针包含一个变量的地址。当我们定义一个指向指针的指针时,第一个指针包含了第二个指针的地址,第二个指针指向包含实际值的位置。

C 中指向指针的指针

一个指向指针的指针变量必须如下声明,即在变量名前放置两个星号。例如,下面声明了一个指向 int 类型指针的指针:

int **var;

当一个目标值被一个指针间接指向到另一个指针时,访问这个值需要使用两个星号运算符,如下面实例所示:

#include <stdio.h>
 
int main ()
{
   int  var;
   int  *ptr;
   int  **pptr;

   var = 3000;

   /* 获取 var 的地址 */
   ptr = &var;

   /* 使用运算符 & 获取 ptr 的地址 */
   pptr = &ptr;

   /* 使用 pptr 获取值 */
   printf("Value of var = %d\n", var );
   printf("Value available at *ptr = %d\n", *ptr );
   printf("Value available at **pptr = %d\n", **pptr);

   return 0;
}

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

Value of var = 3000
Value available at *ptr = 3000
Value available at **pptr = 3000


Weif
2019年3月21日

相关文章

  • 指针数组和数组指针

    指针数组|存储指针的数组 在C语言和C++语言中,数组元素全为指针的数组称为指针数组。 例如:int *p[10]...

  • 《C语言16—指针数组》

    2019年3月21日星期四 阴 (声明:理论知识部分来自菜鸟教程网站!)今日学习内容:(4.2)C 指针数组在说...

  • C语言中的指针与数组

    C语言中的指针与数组 @(C语言)[排序算法, 快速排序, C实现] 引言 相信指针与数组是不少同学在初学C语言时...

  • 再学C语言之指针要点

    C之字符数组 C之指针引用字符串 C语言之数组指针 数组指针:首先它是一个指针,它指向数组指针数组:首先它是一个数...

  • C语言21 指针数组与数组指针

    C语言21 指针数组与数组指针 指针数组的定义 指针数组的赋值 结构体指针数组 分析下面的代码 数组指针的定义 数...

  • 02-C语言的指针

    02-C语言的指针 目标 C语言指针释义 指针用法 指针与数组 指针与函数的参数 二级指针 函数指针 指针在C中很...

  • 指针数组&数组指针

    本节继续讨论C语言中的指针。 指针数组&数组指针 先理解一下什么是指针数组和数组指针,指针数组的实质是个数组,这个...

  • C语言的指针与数组(进阶篇之一)

    一、一维数组与指针 (1).数组指针在C语言中,数组的首地址称为数组指针。而C++规定,数组的首地址可用数组名a表...

  • C语言数组指针指针数组

    以前我觉得成绩不重要,清华北大只能代表学生时代的成就,后来才发现,努力是种习惯,他会贯穿一生。。。 ---- 网易...

  • C语言

    C 指针、指针变量、函数指针、指针函数、指针数组、数组指针、C 数组

网友评论

    本文标题:《C语言16—指针数组》

    本文链接:https://www.haomeiwen.com/subject/dwdqvqtx.html