先看一段代码: #include<stdio.h> #include<stdlib.h> int main(void) { int a[5] = { 1,2,3,4,5 }; printf("%d,%d \n", a, &a); printf("%d,%d \n", a+1, &a+1); prin ...
分类:
编程语言 时间:
2020-01-27 09:36:34
阅读次数:
80
本文链接:https://blog.csdn.net/Nonpc123/article/details/96431952int ints[20] = {10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200}; i ...
分类:
编程语言 时间:
2019-10-24 19:32:39
阅读次数:
101
本文链接:https://blog.csdn.net/loongkingwhat/article/details/78910921 数组和指针向来就是傻傻分不清,当他们一起出现的时候就更加懵逼。 1 解析不同变量之间的区别: 数组名a: 数组名可以作为数组第一个元素的指针。我们由数组和指针的关系知道 ...
分类:
编程语言 时间:
2019-10-12 22:25:08
阅读次数:
117
2019-01-26 16:06:35 数组名是数组这种类型的变量名,所以对数组名取地址是取的整个数组的地址,所以&a+1自然要跨过整个数组的长度,本题即跨过2*5 = 10个int的长度。 有了上述概念,再来分析这道题,int *ptr = (int *)(&a+1),p此时指向的地址应该是a[1 ...
分类:
编程语言 时间:
2019-01-26 17:06:47
阅读次数:
204
#include #include int main() { int a[5] = {1,2, 3, 4, 5}; int *p = (int*)(&a+1); printf("%d\n", *(p-1)); return 0; } ...
分类:
编程语言 时间:
2018-08-16 20:54:06
阅读次数:
149
在C/C++中,数组名相当于一个指针,指向数组的首地址。这里“相当于”不代表等于,数组名和指针还是有很多区别的,这个在《C陷阱与缺陷》里有详尽的讲述。而这里要说的是对于数组名取地址的这么一个操作。 如果声明有如下数组: 那么,&arr这个操作得到了什么值呢? 如果简单的认为arr就是一个指向数组首地 ...
分类:
编程语言 时间:
2017-04-05 23:03:58
阅读次数:
166
这个问题的发现是在以下的代码中发现的:#include<stdio.h>
intmain()
{
intarr[2]={1,2};
printf("%p",arr);
printf("%p",&arr);
return0;
}在运行之后我们发现的数组名本身的地址和数组名内部存储的地址是完全一样的,我们把数组名理解为一个const的指针(数组名只..
分类:
编程语言 时间:
2016-12-16 20:07:25
阅读次数:
106
一,首先我们先分析下数组名和数组名取地址的区别。 我们都知道数组名是数组的首地址,然而对数组名取地址又是什么那?看下面一段程序你就会懂的。 #include "stdafx.h" #include<stdio.h> using namespace std; void main() { int a[5 ...
分类:
编程语言 时间:
2016-11-24 15:42:49
阅读次数:
155
http://blog.csdn.net/zdcsky123/article/details/6517811 相信不少的C语言初学者都知道,数组名相当于指针,指向数组的首地址,而函数名相当于函数指针,指向函数的入口地址。现在又这样一个问题,如果对数组名取地址,那得到的会是什么呢?很多人立刻会想到:给 ...
分类:
编程语言 时间:
2016-05-11 14:58:49
阅读次数:
207
在C/C++中,数组名相当于一个指针,指向数组的首地址。这里“相当于”不代表等于,数组名和指针还是有很多区别的,这个在《C陷阱与缺陷》里有详尽的讲述。而这里要说的是对于数组名取地址的这么一个操作。如果声明有如下数组:int arr[5];那么,&arr这个操作得到了什么值呢?如果简单的认为arr就是...
分类:
编程语言 时间:
2015-10-07 01:04:00
阅读次数:
370