pre{
line-height:1;
color:#1e1e1e;
background-color:#f0f0f0;
font-size:16px;}.sysFunc{color:#627cf6;font-style:italic;font-weight:bold;}
.selfFuc{color:#800080;}
.bool{color:#d2576f;}
.condition{color:#000080;font-weight:bold;}
.key{color:#000080;}
.var{color:#800000;font-style:italic;}
.Digit{color:#ff00ff;font-weight:bold;}
.includePre{color:#1e1e1e;}
.operator {color:#008000;font-weight:bold;}

数组名的含义

 
         int a[2]={1,2};
   
         cout<<&a<<endl;
         cout<<a<<endl;
         cout<<&a[0]<<endl;
         cout<<*a<<endl;
         cout<<sizeof(a)<<endl;
 

0012F0C8

0012F0C8

0012F0C8

1

8

由此可见, 数组名a的值、&a、&a[0]的值相同,而a[0]为数组的第一个元素。

我们可以推断: 编译器没有为数组名分配空间,但编译器对数组名做了特殊处理

即是,     数组名    为数组首地址,

而且       &数组名  也是代表的数组首地址。

 
 
 
         int a[4]={1,2,3,4};
         int (*p)[4];
 
         p=a;  // 这种赋值是错误的
 
         p=&a; // 这种赋值是正确的,原因p是数组指针 所以应将数组的地址赋值给p  
               //                                就如同p若为整形指针,则应将整形的地址赋值给p
               //                                虽然在实际中,数组名与&数组名 都是同一个值,但是编译器在逻辑上仍然将a视为数组,将&a视为取数组的地址
               //                                所以数组指针=&数组名  即p=&a;
 
 

又如程序:

 
 
 
         int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
         int (*p)[4];
 
 
 
        
         for(p=&a[0];p<&a[0]+3;p++)
                   cout<<&p<<endl;
         cout<<endl;
 
 
         for(p=&a[0];p<&a[0]+3;p++)
                   cout<<p<<endl;
         cout<<endl;
 
         for(p=&a[0];p<&a[0]+3;p++)
                   cout<<*p<<endl;
         cout<<endl;
 
         for(p=&a[0];p<&a[0]+3;p++)
                   cout<<**p<<endl;
 
 

输出:

 

0012F0CC   // &p

0012F0CC

0012F0CC

 

0012F09C   / /p

0012F0AC

0012F0BC

 

0012F09C   //*p

0012F0AC

0012F0BC

 

1         //**p

5

9

指针含义

 

指针  是一个变量,占用4字节, 用以保存地址。

 

指针的SIZE是固定的,是4字节,但是指针指向的那块内存区域的大小取决于指针的类型。

 
 
Int *p  ;       指向的内存区域以4字节为一个单元进行操作
 
Char *p;       指向的内存区域为以1字节为一个单元进行操作
 
Char  (*p)[5];  指向的内存区域为以5个字节为一个单元进行操作
 
 
Class B:public A
{
}
 
A *p =new B();   指针指向的内存区域为生产的B对象中继承自A的那部分空间

本文使用 书画小说软件 发布,内容与软件无关,书画小说软件 更惬意的读、更舒心的写、更轻松的发布。

 

数组名的含义.xml的更多相关文章

  1. 对数组名取地址 a[ ],&a

    C语言规定,数组名代表数组的首地址,也就是第0号元素的地址.所以a==&a[0] 但对数组名取地址时却要注意了,在理解“对数组名取地址”这一表达式的含义时一定要记住:数组名是“数组”这种变量的 ...

  2. C/C++小课之数组名是什么

    我们今天讨论数组名是什么东西,理解它有助于我们进一步理解和使用指针. 因为它涉及到了内存地址. 问题 数组名是什么?含义是什么? 思路 前提 一个值+1之后的变化可以反映出它的意义/含义. 前提的证明 ...

  3. C和指针 第六章 数组名与指针

    指针的算术运算符是指针和数组之间的一种关联,但不是唯一关联: 可以使用数组名作为指向数组第一个元素的指针,但是不可以给数组名赋新的值. //如下声明a int a[10]; //用a作为指向数组第一个 ...

  4. 在主方法中定义一个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’;输出这个数组中的所有元素。

    //在主方法中定义一个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’:输出这个数组中的所有元素. char [][]y=new char [10][10 ...

  5. c语言 数组名是常量指针

    //数组名是常量指针 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include ...

  6. C语言的数组名和对数组名取地址

    http://blog.csdn.net/zdcsky123/article/details/6517811 相信不少的C语言初学者都知道,数组名相当于指针,指向数组的首地址,而函数名相当于函数指针, ...

  7. C/C++数组名与指针的区别详解

    1.数组名不是指针我们看下面的示例: #include <iostream> int main() { ]; char *pStr = str; cout << sizeof( ...

  8. 指针数组  数组指针的区别.xml

    pre{ line-height:1; color:#1e1e1e; background-color:#f0f0f0; font-size:16px;}.sysFunc{color:#627cf6; ...

  9. 对于C语言中数组名是指针的理解

    我们都知道,c语言中数组名是一个指针,比如下面这段代码 #include<iostream>using namespace std;int main(){ int a[4]={1,2,3, ...

随机推荐

  1. CentOS查看内核版本,位数,版本号

    1)[root@localhost ~]# cat /proc/version Linux version 2.6.18-194.el5 (mockbuild@builder10.CentOS.org ...

  2. XML文件操作学习(一)

    受人启发,从今天开始也把学到的东西记在博客里加深印象,并且完成这个梳理过程. 最近大多数的时间都花费在做系统配置上了.大部分的配置比较复杂的都用xml文件来存储.暂时发现有以下几点需要注意的地方. 今 ...

  3. Test Tools

    1. http://www.dummytextgenerator.com/: Generate dummy text 2. fsutil file createnew D:\New.txt 1024: ...

  4. RTC系统【转】

    http://blog.csdn.net/fanqipin/article/details/8089995 转自:http://www.cnblogs.com/muhuacat/p/5276306.h ...

  5. 第一个Linux驱动-流水灯【转】

    转自:http://www.xuebuyuan.com/1856562.html 水平有限,描述不当之处请指出,转载请注明出处http://blog.csdn.net/vanbreaker/artic ...

  6. 在android.app.Application中定义全局变量

    在Android应用中使用全局变量,除了public的静态变量,还有更优雅的方式是使用android.app.Application. 启动Application时,系统会创建一个PID,即进程ID, ...

  7. Allegro16.3约束设置

    差分对的约束设置 第一步,差分对的设置 差分对的设置有很多方法,下面介绍两种最常用的方法. 1. 点击菜单Logic→Assign Differential Pair... 弹出以下对话框. 点击你想 ...

  8. poj -2010 Moo University - Financial Aid (优先队列)

    http://poj.org/problem?id=2010 "Moo U"大学有一种非常严格的入学考试(CSAT) ,每头小牛都会有一个得分.然而,"Moo U&quo ...

  9. win7 64位系统 Oracle32bit + PL/SQL访问Orale服务,Oracle 11g的安装,中文乱码问题的解决

    前几天装了个Oracle32bit客户端 + PL/SQL连接不上oracle,我安装完打开PL/SQL登录界面跟正常的界面不一样,没有那个连接为Normal.SYSDBA的选项,下面有解释,至于我为 ...

  10. 微信公共服务平台开发(.Net 的实现)5-------解决access_token过期的问题(转)

    因为access_token,在以后的高级功能里面会经常用到,所以这里不得不这里对前面所讲解的access_token改造一下.另外需要说明的是access_token是变化的,有自己的周期,官方解释 ...