欢迎光临散文网 会员登陆 & 注册

c语言数组基本概念复习

2023-06-20 20:08 作者:齐乐天世界第一帅  | 我要投稿


今天简单复习一下数组
       1) 什么是数组:数组由数据类型相同的一系列元素组成。
       2)使用时:需要通过声明数组告诉编译器数组内包含多少元素和这些元素类型。编译器通过这些信息正确地创建数组。普通变量可以使用的类型,数组元素都可以用。
       3)数组元素:[]表示数组,例如candy[3],表示candy是一个数组,[3]中的3表示这个数组共有3个元素,数组元素的编号从0开始,例:candy[364],表示365个元素,也是最后一个元素。
       4)数组的定义:类型说明符 数组名[常量表达式];,例如:int a[5]; 。
       5)数组的初始化:①完全初始化 例:int a[5] = {1, 2, 3, 4, 5};
                                ②不完全初始化 例:int a[5] = {1, 2}; ,后面的元素系统自动默认为0;     int a[] = {1, 2, 3, 4, 5}; ,这种情况系统会根据{}里的元素个数,自动补全[]里的元素个数。


简单例子:

#include <stdio.h>

int main(void)

{

    int a[3] = {1, 2, 3};  //定义长度为3的数组a

    int t;

    t = a[2];  //引用数组a中下标为2的元素a[2]=3

    printf("t = %d\n", t);

    return 0;

}

输出结果是:
t = 3

“int a[5];”是定义了有 5 个元素的数组,这 5 个元素分别为 a[0]、a[1]、a[2]、a[3]、a[4]。而 t=a[3] 中的 a[3] 不是数组,只是其中的元素 a[3]。
此外,当给元素单独赋值时不能加大括号,因为元素就是变量,即 a[5] 只是一个变量名。前面是怎么给变量赋值的现在就怎么给数组元素赋值,比如“a[5]=1;”。但是对于上面这个程序,这么写还是错误的。因为数组元素的下标是从 0 开始的,数组 a 的元素只有 a[0]~a[4],并没有 a[5] 这个元素。




1)指针的基本概念:

指针提供一种以符号形式使用地址的方法。因为计算机的硬件指令非常依赖地址,指针在某种层面把程序员想要表达的指令以更接近机器的方式表达。因此使用指针的程序更有效率。尤其是,指针能有效的处理数组。数组的表示法其实是在变相的使用指针。 

                              
2)指针概念的理解:

计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。

假设内存块为一栋大楼,每个内存单元为一间房子,每个指针就好比每间房子的门牌号,我们通过门牌号找到相应的房子,同理,我们可以通过指针找到相应的内存单元。

简单例子:

#include <stdio.h>

int main()

{

int a = 10;

printf("%d\n",a);    //在内存中开辟一块空间

int *p = &a;           //这里我们对变量a,取出它的地址,可以使用&操作符。

                            //**将a的地址存放在p变量中,p就是一个之指针变量**。

 *p=2;                  //*+指针表示解引用,相当于通过指针找到a这块内存单元

 printf("%d\n",a);

return 0;

}

输出结果:10,2  

总结:指针是一个变量,是用于存储地址的变量


3)指针的8种基本操作:①赋值:可以把地址赋给指针。

                                        ②解引用:*运算符给出指针指向地址上存储的值。

                                        ③取址:和所有变量一样,指针变量也有自己的地址和值。

                                        ④指针与整数相加:可以使用+运算符,把指针与整数相加,或者                                            整数与指针相加。

                                        ⑤递增指针:递增指向元素的指针可以让指针移动至数组的下一                                                   个元素。

                                         ⑥指针减去一个整数:可以用 - 运算符从指针中减去一个整数。指                                                针必须是第一个运算对象,整数是第二个运算对象。

                                         ⑦递减指针:和递增指针同理移动方向相反。

                                         ⑧指针求差:可以计算两个指针的差值。


关键概念:

数组用于存储相同类型的数据。C把数组看作是 派生类型,因为数组是建立在其他类型的基础上。也就是说,无法简单地声明一个数组。在声明数组是必须说明其元素类型,如 int 类型的数组,float类型的数组,或其他类型的数组。所谓的其他类型也可以是数组类型,这种情况下,创建的是数组的数组(或简称二维数组)。

通常编写一个函数来处理数组,这样在特定的函数中解决特定的问题,有助于实现程序的模块化。在把数组名作为实际参数时,传递给函数的不是整个数组,而是数组的地址(因此,函数对应的形式参数是指针)。为了处理数组,函数必须知道从何处开始读取数据和要处理多少个数组元素。数组地址提供了“地址”,“元素个数”,可以内置在函数中或作为单独的参数传递。第 2 种方法更普遍,因为这样做可以让同一个函数处理不同大小的数组。

数组和指针关系密切,同一个操作可以用数组表示法或指针表示法。它们之间的关系允许你在处理数组的函数中使用数组表示法,即使函数的形式参数是一个指针,而不是数组。

对于传统的C数组,必须用常量表达式指明数组的大小,所以数组的大小在编译时就已经确定。C99/C11新增了变长数组,可以用变量表示数组大小。这意味着长数组的大小延迟到程序运行时才确定。


c语言数组基本概念复习的评论 (共 条)

分享到微博请遵守国家法律