指针和数组的关系和区别(C语言算法中指针和数组有什么区别)

:暂无数据 2026-05-09 20:20:01 0
今天给各位分享C语言算法中指针和数组有什么区别的知识,其中也会对C语言算法中指针和数组有什么区别进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录

C语言算法中指针和数组有什么区别

数组和指针是不同的。定义一个数组就为数组划分了一段内存空间,而指针是不占用内存空间的,除非是用malloc等类似函数为其分配内存空间。指针可以指向一个数组的内存空间,比如:
int
a={0};
int
*p=a;
指针也可以指向函数,
是很灵活的。

数组和指针的区别

  数组和指针的区别:

  1、指针变量用于保存数据的地址,数组用于直接保存数据(当然你可能见过,数组的每个元素是指针,不过,一组指针也是数据,它们各自的内容才是地址)。

  2、访问方式:指针是间接访问,首先取得指针的内容作为地址,再去该地址访问数据;数组是直接访问,数组名即是地址。

  3、指针通常用于动态数据;数组通常用于固定数目和类型的一组数据。

  4、定义指针变量并不会带来内存分配,要自行分配内存并且将指针变量的内容改写为分配好的地址,通常用内存分配函数如malloc达到;定义数组会隐式分配内存。

  5、对sizeof操作符的返回值影响,sizeof(指针)永远会返回平台指针大小,通常32位机返回4,64位返回8,而sizeof(数组名),则会返回数组的内存大小,这取决于数组包含多少个数据。

指针与数组的关系是什么啊

1、指针:系统为某一个变量开辟单元格,指针便指向此单元格的变量值。

2、数组:系统为某一组数开辟一组单元格,数组首地址便是你定义的数组变量名。

数组和指针的唯一区别是,不能改变数组名称指向的地址。

对于数组来说,数组的首地址,也可以用指针来表示操作,如:

int a;

int *p,n;

p = a;

对第一个元素取值,可以用几种方法:

n =a;

n = *p;

n = p;

n = *(p+0) ;

但是以下语句则是非法的:

readings = totals; // 非法!不能改变 readings totals = dptr; // 非法!不能改变 totals

数组名称是指针常量。不能让它们指向除了它们所代表的数组之外的任何东西。

扩展资料

下面的程序定义了一个 double 数组和一个 double 指针,该指针分配了数组的起始地址。随后,不仅指针符号可以与数组名称一起使用,而且下标符号也可以与指针一起使用。

int main()

{

c***t int NUM_COINS = 5;

double coins = {****, ***, ****, ***, ***};

double *doublePtr; // Pointer to a double

// Assign the address of the coins array to doublePtr

doublePtr = coins;

// Display the contents of the coins array

// Use subscripts with the pointer!

cout 《《 setprecision (2);

cout 《《 "Here are the values in the coins array:\n";

for (int count = 0; count 《 NUM_COINS; count++)

cout 《《 doublePtr 《《 " ";

// Display the contents of the coins array again, but this time use pointer notation with the array name!

cout 《《 "\nAnd here they are again:\n";

for (int count = 0; count 《 NUM_COINS; count++)

cout 《《 *(coins + count) 《《 " ";

cout 《《 endl;

return 0;

}

程序输出结果:

Here are the values in the coins array: **** *** **** *** 1 And here they are again: **** *** **** *** 1

当一个数组的地址分配给一个指针时,就不需要地址运算符了。由于数组的名称已经是一个地址,所以使用 & 运算符是不正确的。但是,可以使用地址运算符来获取数组中单个元素的地址。

c语言中的数组和指针的区别

C语言中,数组的名称等价于数组的首地址,
当然可以利用指针开辟动态空间,使用方式与数组在形式上相同的,
但是他们有一个本质的区别,数组名相当于一个地址常数,而指针是一个以地址为内容的变量。
指针与数组的关系可以参考下面的网页:
***隐藏网址***

指针和数组的区别是什么

你好,指针是指向一处内存的东西,里面装着这处内存的地址。
数组也是指针,但它在一开始定义的时候,就指向了一处空内存(系统给你的,可以放心使用),且他是*c***t常量指针(注意不是指向常量的指针),这个指针只要一声明,就不能再改为指向其他内存。而且,数组和指针都能用中括号运算符进行地址偏移。
综上所述,指针和数组的本质是完全一样的,只不过数组一开始就获得了一块内存

数组和指针有什么区别

数组是开辟一块连续的内存空间,数组本身的标示符代表整个数组,可以用sizeof取得真实的大小,数组内可直接放元素值。
指针则是只分配一个指针大小的内存,并可把它的值指向某个有效的内存空间
,如果对指名求sizeof,就是4。指针只是保留变量的地址。

指针和数组的区别

C++/C程序中,指针和数组在不少地方都是可以相互替换使用的,这就让人产生一种错觉,以为两者是等价的。
数组或是在静态存储区被创建(全局数组),或是在栈上被创建。数组名对应着,注意不是指向,一块内存,其地址与容量在生命期内保持不变(当然,使用了realloc()的不算),只有数组的内容可以改变。
指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。指针远比数组灵活,当然也就更危险。
区别之一:
char a = "hello";
a = ’X’;
cout 《《 a 《《 endl;
char *p = "world"; // 注意p指向常量字符串
p = ’X’; // compiler不能发现该错误,不过在运行的时候会发生runtime error
cout 《《 p 《《 endl;
区别之二:
用运算符sizeof可以计算出数组的容量(字节数)。比如对应上面的代码,sizeof(a)的值是12(包括最后面的’\0’)。指针p指向a,但是sizeof(p)的值却是4。这是因为sizeof(p)得到的是一个指针变量的字节数,相当于sizeof(char*),而不是p所指的内存容量siziof(char)。C++/C不能知道指针所指的内存容量。
值得注意的是,当数组作为函数的参数进行传递时,数组就自动退化为同类型的指针。那么不论数组a的容量是多少,sizeof(a)始终等于sizeof(char *)。

c语言中数组和指针的区别与联系

数组是用指针方式实现的,但数组值是一个常量,即不能改变数组的首地址,而指针是一个变量,可以改变它的值;如:数组 a和指针p,p=a+1;是合法的,但a=a+1;是不合法的。

C语言中,指针和数组的区别和联系

指针就是一个装地址的变量,数组是内存中的一个区域,而数组名是这个区域的首地址。也就是说你在定义指针的时候编译器只分配了一个变量的空间(空间大小由内存地址长度决定),而定义数组的时候编译器分配了一段区域的空间(空间大小由[
]里面的数字和数组的类型决定)。使用上你可以把一个地址赋值给指针,但是不能赋值给数组名。你可以直接给数组里面的变量赋值,这是安全的,因为内存已经申请好了,而给指针里面装个那个地址赋值就要小心了,因为指针里面那个地址很可能会出错。

感谢你花费时间阅读这篇关于指针和数组的关系和区别的长文。我们深知,把C语言算法中指针和数组有什么区别这样的复杂概念讲清楚不易,如果你觉得我们做到了,请告诉我们;如果还有疑问,更请告诉我们!
本文编辑:admin

本文相关文章:


二进制异或运算法则(异或运算法则)

二进制异或运算法则(异或运算法则)

就像学骑车需要掌握平衡一样,理解二进制异或运算法则的窍门,恰恰在于把握好异或运算法则这个“平衡点”。

2026年5月7日 09:20

javascript数组奇数在左偶数在右(将一维数组A[1:n]中所有奇数移到数组的左边,所有偶数移到数组的右边请写出该操作的算法)

javascript数组奇数在左偶数在右(将一维数组A[1:n]中所有奇数移到数组的左边,所有偶数移到数组的右边请写出该操作的算法)

其实javascript数组奇数在左偶数在右的问题并不复杂,但是又很多的朋友都不太了解将一维数组A[1:n]中所有奇数移到数组的左边,所有偶数移到数组的右边请写出该操作的算法,因此呢,今天小编就来为大家分享javascript数组奇数在左偶

2026年4月17日 22:40

二位数乘二位数速算法(二位数乘二位数速算法)

二位数乘二位数速算法(二位数乘二位数速算法)

从一个常见的误区说起:很多人学二位数乘二位数速算法,却忽略了二位数乘二位数速算法。结果事倍功半。希望你不会再犯这个错误。

2026年4月16日 07:40

知道了算法怎么编写程序(数据结构中的算法怎样转化为可执行的c语言程序啊)

知道了算法怎么编写程序(数据结构中的算法怎样转化为可执行的c语言程序啊)

读懂本文,您将不仅了解知道了算法怎么编写程序是什么,更能洞悉数据结构中的算法怎样转化为可执行的c语言程序啊背后的逻辑,从而举一反三。

2026年4月10日 07:40

二叉树中序遍历递归算法(二叉树中序遍历递归算法)

二叉树中序遍历递归算法(二叉树中序遍历递归算法)

今天这份关于二叉树中序遍历递归算法的指南,将用80%的篇幅讲透二叉树中序遍历递归算法这个决定成败的细节,绝对让你不虚此行。

2026年4月10日 02:40

二进制转换方法的口诀(二进制算法口诀)

二进制转换方法的口诀(二进制算法口诀)

大家好,二进制转换方法的口诀相信很多的网友都不是很明白,包括二进制算法口诀也是一样,不过没有关系,接下来就来为大家分享关于二进制转换方法的口诀和二进制算法口诀的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

2026年4月7日 05:20

更多文章:


java移位运算有什么作用(在java中, 一个数左移n位,就是将这个数乘以2的n次方,右移就是将这个数除以2的n次方怎么理解)

java移位运算有什么作用(在java中, 一个数左移n位,就是将这个数乘以2的n次方,右移就是将这个数除以2的n次方怎么理解)

很多朋友初次接触java移位运算有什么作用可能会觉得有点陌生,这很正常。今天这篇文章,咱们就一起把在java中, 一个数左移n位,就是将这个数乘以2的n次方,右移就是将这个数除以2的n次方怎么理解这事儿聊透,希望能帮您理清思路。

2026年5月9日 21:40

2016excel教程自学网(excel2016包含公式怎么操作)

2016excel教程自学网(excel2016包含公式怎么操作)

2016excel教程自学网的背后,隐藏着怎样的秘密?excel2016包含公式怎么操作又在其中扮演了何种角色?带着疑问,我们一起探秘。

2026年5月9日 21:20

php写api(php开发api接口,如何做才算是安全的)

php写api(php开发api接口,如何做才算是安全的)

最新数据显示,关注php写api的人中,超过70%都对php开发api接口,如何做才算是安全的抱有浓厚兴趣。本文将满足这一核心需求。

2026年5月9日 21:00

scala读音(戛纳两个字怎么读)

scala读音(戛纳两个字怎么读)

想快速搞懂scala读音吗?本文将围绕戛纳两个字怎么读等核心问题,用最直白的语言为您提供一份实用指南,帮您节省大量摸索的时间。

2026年5月9日 20:40

指针和数组的关系和区别(C语言算法中指针和数组有什么区别)

指针和数组的关系和区别(C语言算法中指针和数组有什么区别)

今天给各位分享C语言算法中指针和数组有什么区别的知识,其中也会对C语言算法中指针和数组有什么区别进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年5月9日 20:20

多线程的使用场景(如何在两个线程间共享数据)

多线程的使用场景(如何在两个线程间共享数据)

大家好,多线程的使用场景相信很多的网友都不是很明白,包括如何在两个线程间共享数据也是一样,不过没有关系,接下来就来为大家分享关于多线程的使用场景和如何在两个线程间共享数据的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

2026年5月9日 20:00

loneliness(孤单的英文是什么)

loneliness(孤单的英文是什么)

朋友们,对loneliness感到陌生再正常不过了。本篇内容将化身您的指南针,帮您在孤单的英文是什么的迷雾中找到方向。

2026年5月9日 19:40

cellpadding英文(html 的 元素和属性的英文全称都是什么)

cellpadding英文(html 的 元素和属性的英文全称都是什么)

曾几何时,我也觉得cellpadding英文高不可攀,尤其html 的 元素和属性的英文全称都是什么更是一头雾水。后来才发现,只是没找对方法,希望我的经验能帮到你。

2026年5月9日 19:20

新手编程后端语言(后端开发用什么语言)

新手编程后端语言(后端开发用什么语言)

常言道:“万丈高楼平地起”。理解新手编程后端语言这座大厦,也必须从后端开发用什么语言这块基石开始。

2026年5月9日 19:00

重庆java培训班(你觉得现在的java培训怎么样)

重庆java培训班(你觉得现在的java培训怎么样)

相信点开这篇文章的你,一定对重庆java培训班抱有好奇。没关系,下面我们就结合你觉得现在的java培训怎么样,带你一步步揭开它的面纱。

2026年5月9日 18:40

最近更新

scala读音(戛纳两个字怎么读)
2026-05-09 20:40:02 浏览:0
loneliness(孤单的英文是什么)
2026-05-09 19:40:02 浏览:0
热门文章

split函数 sql(求sql split函数的用法)
2026-03-26 20:40:01 浏览:1
mysql insert into字段顺序问题(mysql insert into的问题)
2026-04-13 16:00:02 浏览:1
标签列表