解释C语言中的指针和一维数组


指针是一个存储另一个变量地址的变量。

特性

指针的特性解释如下:

  • 指针节省内存空间。
  • 由于直接访问内存位置,指针的执行速度更快。
  • 借助指针,可以高效地访问内存,即动态分配和释放内存。
  • 指针用于数据结构。

指针的声明、初始化和访问

考虑以下语句:

int qty = 179;

在内存中,变量可以表示如下:

声明指针

这意味着“p”是一个指针变量,它保存另一个整型变量的地址,如下所示:

Int *p;

指针的初始化

地址运算符 (&) 用于初始化指针变量。

例如:

int qty = 175;
int *p;
p= &qty;

通过指针访问变量

要访问变量的值,使用间接运算符 (*)。

例如:

这里,‘*’可以理解为地址上的值。

以下语句等效于上述两个语句:

p = &qty;
n = *p; n =qty

指针和一维数组

  • 编译器为数组的所有元素分配连续的内存位置。
  • 基地址 = 数组的第一个元素地址(索引 0)。
    • 例如:int a [5] = {10, 20, 30, 40, 50};

元素

五个元素存储如下:

  • 如果 'p' 声明为整型指针,则可以使用以下赋值语句让数组 'a' 指向它:

p = a;
(or) p = &a[0];
  • 可以使用 p++ 来访问 'a' 的每个值,从而从一个元素移动到另一个元素。当指针递增时,其值会增加它指向的数据类型的尺寸。这个长度称为“比例因子”。

  • ‘p’ 和 'a' 之间的关系解释如下:

P = &a[0] = 1000
P+1 = &a[1] = 1004
P+2 = &a[2] = 1008
P+3 = &a[3] = 1012
P+4 = &a[4] = 1016
  • 可以使用元素的索引和数据类型的比例因子来计算元素的地址。这里给出一个例子来解释这一点。

Address of a[3] = base address + (3* scale factor of int)
= 1000 + (3*4)
= 1000 +12
= 1012
  • 可以使用指针访问数组元素,而不是使用数组索引。

  • *(p+3) 给出 a[3] 的值。

a[i] = *(p+i)

示例程序

以下是 C 语言指针和一维数组的程序:

 在线演示

#include<stdio.h>
main ( ){
   int a[5];
   int *p,i;
   printf ("Enter 5 lements");
   for (i=0; i<5; i++)
      scanf ("%d", &a[i]);
   p = &a[0];
   printf ("Elements of the array are");
   for (i=0; i<5; i++)
      printf("%d", *(p+i));
}

输出

执行上述程序后,将产生以下结果:

Enter 5 elements : 10 20 30 40 50
Elements of the array are : 10 20 30 40 50

更新于:2021年3月17日

7K+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告