数组名字和数组取地址的区别

来源:本站
导读:目前正在解读《数组名字和数组取地址的区别》的相关信息,《数组名字和数组取地址的区别》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《数组名字和数组取地址的区别》的详细说明。
简介:数组名字和数组取地址的区别,用实例讲解。

程序如下:

#include <stdio.h>

int main()

{

int a[5] = {1,2,3,4,5};

int *ptr = (int*)(&a+1);

printf("%d %d" , *(a+1), *(ptr-1) );

}

正确的输出结果为2 和 5。

这里*(a+1)为2很容易想到,关键在于 *(ptr-1)为5,很容易出错。

这里主要考的是a和&a的区别:a为数组名,是一个int型指针,指向数组的第一个元素首地址。即a仅仅为a[0]的地址,(a+1)就为a[1]的地址。而&a则表示指向整个数组的指针,虽然值与a相同,但是代表的意义不同,(&a+1)就已经增加到5个int型字节的长度了。 int *ptr = (int*)(&a+1); 这个语句又将数组型指针强制转换为int型指针,所以*(ptr-1) = a[4]。

提醒:《数组名字和数组取地址的区别》最后刷新时间 2024-03-14 01:03:41,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《数组名字和数组取地址的区别》该内容的真实性请自行鉴别。