原文:int a[5]={1,2,3,4,5}; int *p=(int*)(&a+1); printf("%d",*(p-1)); 答案为什么是5?

这个问题的关键是理解 amp a a是一个数组名,也就是数组的首地址。对a进行取地址运算符,得到的是一个指向数组的指针 这句话尤为重要 也就相当于int p amp a p是一个指针,它指向的是一个包含 个int元素的数组 那么执行p 后,p的偏移量相当于 p sizeof int 而程序中强制将指针p转换成一个int 那么 p 其实就是 p sizeof int 所以,p 指向了数组中得最后一个 ...

2015-06-12 17:46 0 4033 推荐指数:

查看详情

int *p()与int (*p)()的区别

int *p()是返回指针的函数 int (*p)()是指向函数的指针 返回指针的函数: int *a(int x,int y); 有若干个学生的成绩(每个学生有4门课程),要求在用户输入学生序号以后,能输出该学生的全部成绩。用指针函数来实现 ...

Sun Sep 20 05:59:00 CST 2015 0 8499
int *pint **p的区别

int *p:一级指针,表示p所指向的地址里面存放的是一个int类型的值 int **p:二级指针,表示p所指向的地址里面存放的是一个指向int类型的指针(即p指向的地址里面存放的是一个指向int的 一级指针) 例如: int i = 10;//定义了一个整形变量 int *p ...

Mon Dec 30 05:01:00 CST 2019 0 1925
int *p[3]和int (*p)[3]区别

这两个其实是数字指针和指针数组的区别。我们一个一个来说明:int *p[3];//定义了一个三维数组,其中的每个元素p[0]、p[1]、p[2]都是指向int变量的指针。int (*p)[3];//定义了一个指针,这个指针是指向一个三维数组的。两者之间的区别和联系可以用一个二维数组来阐述 ...

Fri Aug 18 18:20:00 CST 2017 0 1899
int *p[4]与int (*q)[4]的区别

以上定义涉及两个运算符:“*”(间接引用)、“[]”(下标),“[]”的优先级别大于“*”的优先级别。 首先看int *p[4],“[]”的优先级别高,所以它首先是个大小为4的数组,即p[4];剩下的“int *”作为补充说明,即说明该数组的每一个元素为指向一个整型类型的指针。int *p ...

Sun Nov 29 22:39:00 CST 2015 0 3823
int* &p 讲解

这个是指针的引用 通俗的讲就是给原来的指针重新起一个名字,使得两个指针的意思是相同的。 这里有一篇文章的地址:https://zhidao.baidu.com/question/334477425.html int *(&p)是指针变量的引用。 指针变量同普通变量一样,使用 ...

Tue Mar 10 02:00:00 CST 2020 0 966
const int *p;int *const p;区别及用法

在单片机程序设计中,我们经常会用到const这个关键字,在有些单片机的编译器中可能会是code(比如51系列单片机),但我们在学习C语言的时候,首先还是先学到的const。我们知道,const关键字的含义是"常量的,常数的,不变的"意思。我们最初学到的是cont int a = 5;或者const ...

Thu Jan 10 23:10:00 CST 2019 0 1098
int *p=NULL 和 *p=NULL有什么区别

  很多初学者搜无法分清这两者之间的区别。先看下面的代码:   这时候我们可以通过调试器查看p的值为0x00000000。这句代码的意思是:定义一个指针变量p,其指向的内存里面保存的是int类型的数据;在定义变量p的同时,把p的值设置为0x00000000,而不是把*p的值设置 ...

Thu Aug 08 05:54:00 CST 2019 0 372
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM