-
指针、数组名称和引用之间的相似之处在于,它们都可以操作地址中的数值。
区别: 指针:指针变量指向一个地址,也就是说,如果要操作一个数值,则定义 int *p = &a; 因此,如果 a 的值为 20,则内存中 a 的地址为 0x1111,并且存储在 p 中的值为 0x1111,如果输出 p 的值,则 p=0x1111,而不是 20。
数组名称:是存储在连续空间中的值,如果 int b[10],则定义 b[0] 的地址 (&b[0]) 为 0x0000,因为 int 占用 2 个字节,则 &b[1] = 0x000f,依此类推。 操作整个数组与操作一维指针相同。
int *p = b;(与 int *p = &b[0] 的效果相同)。
int a = 0;
fun(a);
cout “所以,a 的值是 1。 这里 C 相当于 A 的另一个名称。 就像古人的名字和人物一样,你对关羽的手术,也和你对关云昌的手术是一样的。 在同一地址空间中操作具有不同名称的值。
我不知道我是否能理解这一点。
-
上面有些说得太多了,但重点没有说;
2.数组名称:是常量类型的指针,与“指针”变量的主要区别;
房东连帖子都没看,也没结束,所以太忙了。
-
1.指针变量用于保存数据的地址,数组用于直接保存数据(当然,你可能已经看到,数组的每个元素都是一个指针,但是一组指针也是数据,它们各自的内容都是地址)。
3.指针通常用于动态数据; 数组通常用于固定数量和类型的数据集。
4.定义指针变量不会带来内存分配,需要自己分配内存,并将指针变量的内容改写到分配的地址,通常使用内存分配函数,如malloc; 定义数组隐式地将内存分配给参数之神。
5.影响sizeof运算符的返回值,sizeof(指针)总是会返回平台指针的大小,通常32位训练机返回4,64位返回8,而sizeof(数组名称),它会返回数组的内存大小,这取决于数组包含多少数据。
-
指针数组。 与数组指针的主要区别如下:
1. 数组的名称不能更改,但指向数组的指针可以更改。 字符串。
指针指向的字符串中的字符不能更改,而字符数组中的字符可以更改。 在查找数组的长度时,可以通过借用数组的名称来获取数组的长度,但不能通过借用指针来获取数组的长度。
2.数组名称的指针不能更改,但可以更改数组的指针。 由于无法更改数组名称的点,因此使用自动增量运算符。
自动增量会改变它的指向,这是不正确的,数组名称只能指向数组的开头。
3.指针数组是一个数组,数组的元素都是指针,数组占用的字节数由数组本身决定。 数组指针是指向数组的指针。 在 32 位系统中,它始终是 4 个字节,它指向的数组是多少个字节。
4.字符串指针指向的字符串中的字符不能更改,而字符数组中的字符可以更改。 指针数组本身就是一个数组,但它包含它所包含的数据类型。
它不是 int,也不是像 char 这样的基本类型,它是一种指针类型,说白了,它是一个地址。
-
数组名称确实表示指向数组第一个地址的指针,但是这个指针很特殊,它的值(指针的值是指针指向的地址)不能被覆盖,只能覆盖它指向的内容,换句话说,数组名称只能指向数组的第一个地址, 如果有数组 char a;那么如果 a = a+1; 这是一个甚至无法编译的错误。 对于普通指针,例如,可能有一个数组 char a; 然后定义一个字符 *p = a; 然后使用 p = p+1 是有效的,这意味着指针 p 指向 &a[1]。
第二个区别是,每当使用数组名称指针时,系统都会传入数组的信息,而普通指针只是一个 4 字节的整数,例如:
char a[5];
char *p = a;指针 a 和指针 p 都指向数组 a 的第一个地址<结果为“5”。
-
为什么数组名称的指针不能计算,也就是你说的不能改写,告诉你是因为数组一旦定义,就放在常量区域,你能试着改常数吗?
-
.数组和指针以区分:source。
数组名称确实表示指向数组第一个地址的 bai 指针,但这个指针很特别,它的 dao
值(指针的值是指针指向的地址)不能被覆盖,只能覆盖它指向的内容,换句话说,数组名称只能指向数组的第一个地址,如果有数组字符a; 那么如果 a = a+1; 这是一个甚至无法编译的错误。 对于普通指针,例如,可能有一个数组 char a; 然后定义一个字符 *p = a; 然后使用 p = p+1 是有效的,这意味着指针 p 指向 &a[1]。
第二个区别是,每当使用数组名称指针时,系统都会传入数组的信息,而普通指针只是一个 4 字节的整数,例如:
char a[5];
char *p = a;指针 a 和指针 p 都指向数组 a 的第一个地址。
Cout <,这次运行的结果是“5
-
指针中的数据是所需数据的地址,而数组是将数据存储到连续存储中的数组。
-
ch 是一个数组。 数组的名称也是数组的第一个元素的地址。 与您学习 C 语言的指针有相似之处吗? 首先:和ch有什么关系,str是指针,ch,是的。
-
指针和数组之间的不满。
许多初学者并不确切知道指针和数组之间的关系是什么。 我现在告诉你:他们之间什么都没有。
任何关系! 只是他们经常穿着相似的衣服来逗你。
指针就是指针,在32位系统中,指针变量总是会占用4个字节,它的值是某个内存的地址。
指针可以指向任何位置,但不能指向可以通过此指针变量访问它的所有位置。
数组是一个数组,它的大小取决于元素的类型和数量。 定义数组时,必须指定其元素的类型。
和数字。 数组可以保存任何类型的数据,但不能保存函数。
既然它们彼此之间没有任何关系,为什么很多人将数组与指针混淆呢? 甚至很多人都认为要参考。
针和阵列是一样的。 这与市面上的C语言书籍有关,几乎没有书籍能彻底解释这个问题。
指针和数组的比较。
指针保存数据的地址,指针变量 p 中存储的任何数据都被视为地址。 p本身的地址是由编译器单独存储的,存储在**中,我们不知道如何间接访问数据,所以我们先得到指针变量p的内容,用它作为地址,然后从这个地址中提取数据或者把数据写入这个地址。 指针可以以指针*(p+i)的形式访问; p[i] 也可以作为下标访问。
但本质是先取p的内容,再加上i*sizeof(type)的字节作为数据的真实地址。 动态数据结构常用的函数是 malloc 和 free。 这通常是指匿名数据(尽管它也可以指向命名数据)。
数组保存数据,数组名称 a 表示数组第一个元素的第一个地址,而不是数组的第一个地址。 &a 是整个数组的第一个地址。 a本身的地址由编译器单独存储在**中,我们不知道。
直接访问数据,数组名称 a 是整个数组的名称,数组中的每个元素都没有名称。 您只能以“命名 + 匿名”的方式访问其其中一个元素,并且无法将数组作为一个整体进行读写。 数组可以以指针 *(a+i) 的形式访问; 也可以遵循标记的形状。
答[i]。 但其本质是数组第一个元素的第一个地址,由 a 表示,加上 i*sizeof(类型)字节作为数据的实际地址。 通常用于存储相同数据类型的固定数量的元素。
隐式分配和删除自身是数组名称。
-
区别:C将内存划分为四个区域,并将通用变量和数组放在内存的堆栈区域,因此数组在C的定义中只是一组同类型的普通变量,即使这个变量可能是一个指针。 所以它的作用比指针要小得多,一个指针可以指向任何区域的任何数据,所以会感觉指针和数组名很像,但必须注意的是,数组名只是其中一个指针,它是一个只指向堆栈的指针,指针可以在有限的范围内移动, 即数组的长度。
而且,数组在定义之初就已经有了自己的内存,如果一个通用指针没有指向某个内存块,它就没有自己的内存,也就是所谓的百搭指针。
总结:不仅数组有指针,所有变量都有指针,指针说白了就是内存中的地址,就像房间必须有房间号一样。 在 C C++ 语言中定义指针是在堆栈中打开一个内存空间来存储它指向的内存地址,然后给指针赋值,即将地址值赋值给刚刚打开的内存空间,然后通过访问内存中的地址值间接访问该地址下存储的数据。
如果地址值指向静态存储区域,例如字符串常量,则当然不能更改该点的内容。
说到体验,建筑是一个加分项。
-
例如,您将理解:int *p ,a[5],b;
p=a;b=*p;
将指针 p 的内容指定为 b。
a 表示 a[5] 的第一个地址,a 等价于 &a[0]。 指针就是地址。 (int *p;使用*来区分通用变量,这与以下文字中*的含义不同,注意以下文字中的*表示地址存储的内容)。
-
数组是连续分配一串单元格的,刚定义的时候必须固定数量,看起来很整齐,但写的程序是死程序,容易浪费内存。
指针存储一个地址值,该值指示它指向某个单元格,并且该指针可用于索引该单元格。 数组可用于完成堆栈、堆、树等,它的好处在编程时非常灵活,在构建想法时也有很大的灵活性。
-
看看陈正冲先生对C语言的深入分析。
他们彼此之间没有任何关系! 只是他们长得比较像,喜欢一起玩,更可恨的是,他们穿同样的衣服,问这个问题来迷惑你! 呵呵。
-
算了,数组似乎是受长度保护的,头部是指针,指针是指针。 我不记得了......
你学过C语言吗?
首先:和ch有什么关系,str是一个指针,ch,是一个数组的第一个地址,虽然这两个地址可以是同一个地址,但是它的含义却大不相同,ch不能用数组的名称给它赋值,定义大小后,就想想你给10个孩子糖, 你不能只给第一个,然后其他孩子会不理你,我不是说你也明白。 >>>More
你好,我觉得你说的很有道理! 如果一个男人挖墙脚成功,就叫有实力,在朋友面前很有面子,但相反,如果一个女人挖墙脚,不管她成功与否,在外人眼里,都是廉价的、不雅的、狐狸精的,这是非常不公平和荒谬的。 >>>More