一聚教程网:一个值得你收藏的教程网站

热门教程

C语言 指针数组 和 指向指针的指针

时间:2022-06-25 04:43:53 编辑:袖梨 来源:一聚教程网

指针数组

指针数组是一种特殊的数组,这类数组存放的全部是同一数据类型的内存地址。指针数组的定义形式为:

    数据类型 *数组名[长度];

例如:

const char *c[4] = { "China", "USA", "Rassia", "Japan" }; // 定义长度为 4 的常量字符型指针数组,将数组元素分别指向 4 个 字符串常量

int i;
for (i = 0; i < 4; i++)
{
    puts( *(c + i) );    // 数组指针数组元素所指向的字符串
}

指向常量的指针,必须用 const 定义为常量指针,以避免修改指针所指向的数据造成程序错误。由于 [] 符号比间接运算符 * 的优先级要高,所以首先是数组形式 c[4],然后才是与 * 结合,这样,指针数组内包含 4 个指针 c[0], c[1], c[2], c[3],分别指向 4 个字符串的首地址。



指针变量

指针变量可以指向另一个指针变量,这种操作并不是将一个指针变量所指向的内存地址传递给另一个指针变量,而是定义一种指向指针类型的指针变量,可将其称为双重指针。双重指针的定义形式为:

    数据类型 **变量名;

其中使用 2 个 间接运算符,如下例所示:

int i, *pi, **dpi;    // 声明整型变量 i、整型指针变量 pi 和 整型双重指针变量 dpi
pi = &i;            // 将变量 i 的地址赋给整型指针变量 pi
dpi = π            // 将整型指针变量 pi 的地址赋给整型双重指针变量 dpi
**dpi = 100;        // 间接引用变量 i,给变量 i 赋值
printf("%d", i);    // 输出变量 i 的值

代码中定义了双重指针变量 dpi,将双重指针变量指向指针变量是,必须使用 取地址运算符得到指针变量自身的内存地址。通过双重指针变量间接引用所指向的变量时,因首先要获取其所指向指针变量的地址,然后再要获得所指向指针变量中保存的内存地址,所以需要用 2 个取地址运算符完成这 两重运算。

热门栏目