指针和数组的关系和区别(指针和数组的区别)
本文目录
- 指针和数组的区别
- 指针与数组的关系是什么啊
- c语言中的数组和指针的区别
- 指针和数组的区别是什么
- C语言中,指针和数组的区别和联系
- c语言中数组和指针的区别与联系
- 数组和指针的区别
- 数组和指针有什么区别
- C语言算法中指针和数组有什么区别
指针和数组的区别
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 *)。
指针与数组的关系是什么啊
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()
{
const int NUM_COINS = 5;
double coins = {0.05, 0.1, 0.25, 0.5, 1.0};
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: 0.05 0.1 0.25 0.5 1 And here they are again: 0.05 0.1 0.25 0.5 1
当一个数组的地址分配给一个指针时,就不需要地址运算符了。由于数组的名称已经是一个地址,所以使用 & 运算符是不正确的。但是,可以使用地址运算符来获取数组中单个元素的地址。
c语言中的数组和指针的区别
C语言中,数组的名称等价于数组的首地址,当然可以利用指针开辟动态空间,使用方式与数组在形式上相同的,但是他们有一个本质的区别,数组名相当于一个地址常数,而指针是一个以地址为内容的变量。指针与数组的关系可以参考下面的网页:***隐藏网址***
指针和数组的区别是什么
你好,指针是指向一处内存的东西,里面装着这处内存的地址。数组也是指针,但它在一开始定义的时候,就指向了一处空内存(系统给你的,可以放心使用),且他是*const常量指针(注意不是指向常量的指针),这个指针只要一声明,就不能再改为指向其他内存。而且,数组和指针都能用中括号运算符进行地址偏移。综上所述,指针和数组的本质是完全一样的,只不过数组一开始就获得了一块内存
C语言中,指针和数组的区别和联系
指针就是一个装地址的变量,数组是内存中的一个区域,而数组名是这个区域的首地址。也就是说你在定义指针的时候编译器只分配了一个变量的空间(空间大小由内存地址长度决定),而定义数组的时候编译器分配了一段区域的空间(空间大小由里面的数字和数组的类型决定)。使用上你可以把一个地址赋值给指针,但是不能赋值给数组名。你可以直接给数组里面的变量赋值,这是安全的,因为内存已经申请好了,而给指针里面装个那个地址赋值就要小心了,因为指针里面那个地址很可能会出错。
c语言中数组和指针的区别与联系
数组是用指针方式实现的,但数组值是一个常量,即不能改变数组的首地址,而指针是一个变量,可以改变它的值;如:数组 a和指针p,p=a+1;是合法的,但a=a+1;是不合法的。
数组和指针的区别
数组和指针的区别: 1、指针变量用于保存数据的地址,数组用于直接保存数据(当然你可能见过,数组的每个元素是指针,不过,一组指针也是数据,它们各自的内容才是地址)。 2、访问方式:指针是间接访问,首先取得指针的内容作为地址,再去该地址访问数据;数组是直接访问,数组名即是地址。 3、指针通常用于动态数据;数组通常用于固定数目和类型的一组数据。 4、定义指针变量并不会带来内存分配,要自行分配内存并且将指针变量的内容改写为分配好的地址,通常用内存分配函数如malloc达到;定义数组会隐式分配内存。 5、对sizeof操作符的返回值影响,sizeof(指针)永远会返回平台指针大小,通常32位机返回4,64位返回8,而sizeof(数组名),则会返回数组的内存大小,这取决于数组包含多少个数据。
数组和指针有什么区别
数组是开辟一块连续的内存空间,数组本身的标示符代表整个数组,可以用sizeof取得真实的大小,数组内可直接放元素值。指针则是只分配一个指针大小的内存,并可把它的值指向某个有效的内存空间,如果对指名求sizeof,就是4。指针只是保留变量的地址。
C语言算法中指针和数组有什么区别
数组和指针是不同的。定义一个数组就为数组划分了一段内存空间,而指针是不占用内存空间的,除非是用malloc等类似函数为其分配内存空间。指针可以指向一个数组的内存空间,比如:inta={0};int*p=a;指针也可以指向函数,是很灵活的。
更多文章:
铁路12306官网登录(怎样登陆12306火车票网上订票官网)
2024年7月22日 18:07
青海卫视的节目表是怎样的?青海海西州茫崖市发生3.6级地震,震源深度10千米,目前情况如何
2023年10月16日 19:20
特殊符号网名生成器(2021带特殊符号的网名,可复制的漂亮特殊符号网名2021)
2024年5月19日 00:04
gg修改器免root版中文下载(《GG修改器》下载地址介绍)
2024年5月21日 14:26
北京时间毫秒显示器(北京时间校准几时几分几秒几毫秒怎么添加手机屏幕)
2024年4月4日 06:01
植物大战僵尸 版手机版怎么下载(怎么下载植物大战僵尸mixed版手机版)
2024年7月7日 08:50
暗黑破坏神2隐藏职业(《暗黑破坏神2》怎么才能触发隐藏的事件,遇到超级迪亚波罗有什么攻略)
2024年7月1日 05:59
实况足球2017手机版下载(实况足球2017在哪个地方下载啊)
2024年7月3日 11:22