Application of pointers in C



我现在对C语言很着迷,我正试图破解指针的错误。我有Python、Ruby的经验,但这些东西对我来说很奇怪。我偶然发现了这篇文章:

https://www.geeksforgeeks.org/applications-of-pointers-in-c-cpp/

我确实理解它的基本概念,但当涉及到现实生活中的实现时,我有点困惑。我确实理解使用指针的动态内存分配,也可以通过引用从链接传递参数(交换示例(,但当涉及到访问数组时,我有一个问题——如果arr[2]*(arr + 2)是同一个东西,那么指针在这里的意义是什么?是否有性能优势?还是这只是一种不同的写作方式?

这里的指针的点是什么

在C中,当表达式中使用的数组名称不是&sizeof运算符的操作数时,则称该数组名称为";衰变;指向指向数组的第一个元素的指针。

简单来说,这只是意味着数组名称将隐式转换为指向数组第一个元素的指针"衰变;只是指类型和维度信息的丢失。

例如:

int x[2] = {2, 4};
int *y = x; 

在本例中,我们声明并初始化指针y。当我们引用数组名称CCD_ 6时;衰变";指向指向第一个元素的指针。它还丢失了类型信息(不再是int [2](和维度信息(2(。在这种情况下,y指向x的第一个元素。

我们也可以通过与*(x+i)相同的x[i]来引用数组。请注意,在第二个表达式中是如何引用数组的名称的,我们可以将i添加到x,并转到数组中的第x[i]个元素。

我已经有一段时间没有做C编程了,但当我使用时,我从Standford的免费库中发现了这个出色的链表问题,这有助于建立我的理解-http://cslibrary.stanford.edu/105/LinkedListProblems.pdf

链表使用指针,这是建立你对指针理解的一种很好的方式。基本上,当您使用数组时,需要提前声明大小。这可能并不总是可能的,这就是指针派上用场的地方。

最新更新