数组名a与&a的区别
来源:互联网 发布:但做的软件程序员 编辑:程序博客网 时间:2024/05/16 18:32
对于一个数组 int a[5]; a表示数组首元素的地址,而&a表示数组的首地址。
假设 &a[0]的地址为0x00ffff00;则&a[4]的地址为0x00ffff12; 那么&a+1 的地址为数组的首地址加上该数组的偏移量sizeof(a)(20),a+1 则是数组首元素的地址加上该数组一个元素的偏移量sizeof(a[0])(4)。
上面的都应该明白了吧,下面请看
#include "stdafx.h"
int main(int argc, char* argv[])
{
char a[5]={'A','B','C','D','E'};
char (*p1)[5]=&a;
char (*p2)[5]=a;
return 0;
}
这个你怎样理解?那个是正确的?
(*p)[5]表示p是一个指向含有5个元素的指针变量。
对于char (*p1)[5]=&a; 是把&a的地址赋给指针变量p1(p1是有内存的,它里面保存了指向数组的地址),这里类型相同(都是含有5个元素的数组首地址),若此句改为char (*p1)[3]=&a; 或者char (*p1)[10]=&a; 都会报错,因为所包含的严肃个数不同,我认为即 字节数不同,只有包含的元素相同才能赋值操作,当然这要是在指向内存里存的值得类型一样的前提下。
从上面的分析自然就知道char (*p2)[5]=a;这句是错的了,一个是 char *[5] 一个是 char [5]。(a是sizeof(a)空间的名字)
- 数组名a与&a的区别
- 数组名a与&a的区别
- 数组名 a 与&a的区别
- a为数组名,a与&a的区别
- a为数组名,a与&a的区别
- C++学习之数组名a与&a的区别
- 数组名a和&a的区别
- 数组名a和&a 的区别
- 数组名a和&a的区别
- 数组名a和&a的区别
- 数组名a和&a的区别
- C++的基础知识(十一)--数组做函数参数、数组名a与&a区别、数组名a的"数据类型"
- C语言学习知识点(四):数组名a与取地址数组名&a的区别
- 数组名a+1和&a+1的区别
- C++数组名a和&a的区别
- C++数组名a和&a的区别
- 数组 a 与 &a 的区别联系
- 数组中a与&a的区别
- 九度笔记之 1346:会员积分排序
- IIS6.0 应用程序池Web园导致Session丢失
- 跨域ajax原理(jsonp方式)
- linux命令使用
- android登录界面
- 数组名a与&a的区别
- 基类指针指向派生类对象
- visualSVN server库迁移
- EXT ajax提交
- poj 2096 Collecting Bugs(期望DP)
- SAP HANA与OracleExalytics 产品对比!做出你的选择!
- 豆瓣api之OAuth认证
- 博客已搬家
- 将文件加入项目时报“”locked错误