当前位置:网站首页 > 技术博客 > 正文

c语言指针数组与数组指针



在本教程中,您将了解C语言编程中数组与指针之间的关系。您还将学习使用指针访问数组元素。

在了解数组与指针之间的关系之前,请确保检查以下两个主体:

数组是一个顺序数据块。让我们编写一个程序来打印数组元素的地址。

#include <stdio.h> int main() {    int x[4];    int i;    for(i = 0; i < 4; ++i) {       printf("&x[%d] = %p ", i, &x[i]);    }    printf("x数组的地址: %p", x);    return 0; }

输出结果

请注意,地址&x[0]和x是一样的。这是因为变量名x指向数组的第一个元素。

数组和指针之间的关系

从上面的示例中可以明显看出,&x[0]它等效于x。并且,x[0]等效于*x。

同样,

#include <stdio.h> int main() {   int i, x[6], sum = 0;   printf("输入6个数字: ");   for(i = 0; i < 6; ++i) {           // 等效于scanf("%d", &x[i]);       scanf("%d", x+i);           // 等同于 sum += x[i]       sum += *(x+i);   }   printf("总和 = %d", sum);   return 0; }

运行该程序时,输出为:

在这里,我们声明了一个包含6个元素的数组x。为了访问数组的元素,我们使用了指针。

在大多数情况下,数组名称会衰减为指针。简而言之,数组名称将转换为指针。这就是为什么您可以使用指针访问数组元素的原因。但是,您应该记住,指针和数组并不相同

在某些情况下,数组名称不会衰减到指针。

#include <stdio.h> int main() {   int x[5] = {1, 2, 3, 4, 5};   int* ptr;   //ptr被分配了第三个元素的地址   ptr = &x[2];   printf("*ptr = %d ", *ptr);   // 3   printf("*(ptr+1) = %d ", *(ptr+1)); // 4   printf("*(ptr-1) = %d", *(ptr-1));  // 2   return 0; }

运行该程序时,输出为:

并且,输出*(ptr+1)得到第四个元素。类似地,输出*(tr-1)将得到第二个元素。

版权声明


相关文章:

  • 什么是倒排索引技术2024-11-08 09:30:04
  • js判断数据类型typeof2024-11-08 09:30:04
  • html的表单怎么做2024-11-08 09:30:04
  • 开窗函数和窗口函数区别2024-11-08 09:30:04
  • 时间图卷积2024-11-08 09:30:04
  • linux中chmod是什么意思2024-11-08 09:30:04
  • 一句话木马教程2024-11-08 09:30:04
  • 左移右移运算符号2024-11-08 09:30:04
  • 串口调试助手使用说明2024-11-08 09:30:04
  • 命令模式的缺点2024-11-08 09:30:04