解释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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C编程
C++
C#
MongoDB
MySQL
Javascript
PHP