C语言中指针与数组的详解及区别

发布时间:2022-10-29 16:10:11

本文是百分网小编整理的关于C语言重指针与数组的详解及对比的相关资料,供参考学习,希望对大家有所帮助!想了解更多相关信息请持续关注我们应届毕业生考试网!

C语言指针与数组的详解及对比

C语言中指针与数组的详解及区别

通俗理解数组指针和指针数组

数组指针:

eg:int(*arr)[10];

数组指针通俗理解就是这个数组作为指针,指向某一个变量。

指针数组:

eg:int*arr[10];

指针数组简言之就是存放指针的数组;

——数组并非指针&&指针并非数组

(1)定义一个外部变量:

eg:intvalue=10;int*p=&value;

举例:当需要在一个函数中用这个变量时:externaint*p;而非externintp[];

分析:当用:externintp[];这样的形式时,其实是:由于在定义这个变量的时候,是作为一个指针而定义的,则p指向的是value的地址,当p当做一个数组被引入是,它其实存放的是value的地址,而并非指向value,导致调用出现错误。

(2)定义一个外部变量:

eg:intarr[10]={0};

举例:当需要在函数中引入这个外部变量时:externintarr[10];而非externint*arr;

分析:当用externint*arr;这样的方式进行引入是,实际上这样是不对的,在定义这个变量的时候是作为一个整形数组来定义的,但是在声明的时候是用指针来声明的,通过数组声明可以访问到整个数组,但是通过指针实际上声明的指针并非指向数组,而是指向arr[10]数组中首元素arr[0]地址的指针,导致访问出现问题。

——二维数组与指针的关系

定义一个二维数组arr[3][3],由于二维数组在内存中也是按照顺序存储,而并非我们所认为的按照矩阵形式存储的。所以,arr[3]其实就相当与一个数组指针;指向arr[0][0],arr[1][0],arr[2][0].

____数组与指针的其他区别

(1)指针保存的是数据的地址;

数组是用来保存数据的。

(2)指针访问数据是通过数据的地址进行解引用,间接访问的;

数组访问数据是直接的。

(3)指针通常用于动态数据结构;

数组用于存放固定数目而且类型相同的数据。

(4)指针通常指向匿名数据;

数组通常存放已知的。

看了C语言中指针与数组的详解及区别还看了:
  • C语言中指针与数组的区别

    通俗理解数组指针和指针数组,C语言中指针与数组有什么区别呢?应该怎么去区分?下面是小编为大家整理的C语言中指针与数组的区别,欢迎参考~通俗理解数组指针和指针数组数组指针:eg:int(*arr)[10];数组指针通俗理解就是这个数组作为指针...

  • c语言知识:数组指针和指针数组的区别

    指针数组和数组指针,这两个名字不同当然所代表的意思也就不同,下面是其区别,欢迎阅读:指针数组:arrayofpointers,即用于存储指针的数组,也就是数组元素都是指针数组指针:apointertoanarray,即指向数组的指针还要注意...

  • C语言指针函数和函数指针详解

    往往,我们一提到指针函数和函数指针的时候,就有很多人弄不懂。下面详细为大家介绍C语言中指针函数和函数指针。一、指针函数当一个函数声明其返回值为一个指针时,实际上就是返回一个地址给调用函数,以用于需要指针或地址的表达式中。格式:类型说明符*函...

  • C语言中指针函数与函数指针有何区别

    指针函数和函数指针是C语言入门学习中的基础知识,以下是百分网小编搜索整理的关于C语言中指针函数与函数指针的区别,有需要的朋友可以参考一下!想了解更多相关信息请持续关注我们应届毕业生考试网!指针函数一般是指返回指针的函数;#include&l...

  • C语言的指针类型详解

    C语言的指针类型包括两方面的信息:一是地址,存放在指针变量中;二是类型信息,关乎于读写的长度,没有存储在指针变量中,位于用该指针读写时的mov指令中,不同的读写长度对应的mov指令不同。以下是百分网小编搜索整理的关于C语言的指针类型详解,需...