精华内容
下载资源
问答
  • 2、数组首地址:就是数组名字a的地址。 3、整个数组地址:就是整个数组的地址,取地址&a。 下面的代码进行测试: #include <stdio.h> #include <stdlib.h&g...

    现在定义一个char a [10];的数组,下面对这几个名词进行分析:

     

    1、数组首元素地址 :该数组有10个元素,数组首元素即a[0],取的是该元素的地址。

    2、数组首地址:就是数组名字a的地址。

    3、整个数组地址:就是整个数组的地址,取地址&a。

     

    下面的代码进行测试:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main(void)
    {
    	char a[10];	//1 * 10 个字节
    
    	/*类型的本质:固定内存块大小别名
    	可以通过 sizeof()测试
    	*/
    
    	printf("sizeof(a) = %d\n", sizeof(a));
    
    
    	//打印地址
    	//数组名字,数组 首 元素地址,数组首地址
    	printf("a:%d, &a:%d &a[0]:%d\n", a, &a,&a[0]);
    
    
    	//a, &a的数据类型不一样
    	//a, 数组首元素地址, 一个元素1个字节,+1《==》 +1
    	//&a, 整个数组的首地址,一个数组1*10  = 10个字节,+1,《==》 +10
    	printf("a+1:%d, &a+1:%d  &a[1]:%d\n", a + 1, &a + 1, &a[1]);
    
    
    	printf("\n");
    	system("pause");
    	return 0;
    }

     

    测试结果:

     

    示意图:

              以上的测试结果说明,a 与&a的步长不一样,a代表的是数组首元素的地址,也是数组的首地址,加1等价于加一个数组类型的长度;&a代表的是整个数组的地址,加1等价于加整个数组的长度,此例子中也就是加10。

     

     

     

    展开全文
  • 数组首地址与数组首元素首地址

    千次阅读 2019-03-26 09:43:07
    二者并不是一个概念! 举个例子: int a[] = {1,2,3,4,5}; a作为右值时,意义同&a[0]。即数组首元素首地址; &a[0],数组首元素首地址 &a,数组首地址 ...

    二者并不是一个概念!

    举个例子:

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

    a作为右值时,意义同&a[0]。即数组首元素首地址;

    &a[0],数组首元素首地址

    &a,数组首地址

    展开全文
  • 数组名、取数组首地址的区别.pdf
  • 数组首元素的地址,数组首地址

    千次阅读 2020-07-12 23:59:09
    SMG[0] 都代表了数组首元素的地址 首元素的地址是数组第一个元素的地址 即7的地址 *SMG=7 首元素的地址 +1 得到的是下一个元素的地址 例如: SMG+1 代表了第二个元素的地址 即8的地址 *(SMG+1)=8; SMG+2 代表了第三...
    • int SMG[3]={7,8,9};
    1. SMG[0]=7; SMG[1]=8; SMG[2]=9;
    2. SMG 和 &SMG[0] 都代表了数组首元素的地址
      首元素的地址是数组第一个元素的地址 即7的地址
      *SMG=7
    3. 首元素的地址 +1 得到的是下一个元素的地址
      例如:
      SMG+1 代表了第二个元素的地址 即8的地址
      *(SMG+1)=8;
      SMG+2 代表了第三个元素的地址 即9的地址
      *(SMG+2)=9;
    4. &SMG是整个数组的首地址
    5. 首地址 +1 得到的是跳过整个数组的地址
    展开全文
  • a &a[0] &a a、&a[0]、&a三者存储的物理地址值相同,但a 和&a[0]是是以数组中的首个元素为单位,,而&a是以整个数组为单位,这里...a+1表示整个数组后面数据的首地址,跨越了整个数组。 ...

    a &a[0] &a

    a&a[0]&a三者存储的物理地址值相同,但a&a[0]是是以数组中的首个元素为单位,,而&a是以整个数组为单位,这里举例个简单的例子就很好理解了,a+1&a[0]+1指向数组的第二个元素,跨越了一个数组元素,而&a+1表示整个数组后面数据的首地址,跨越了整个数组。

    展开全文
  • 数组首地址与数组名取地址的区别

    千次阅读 2016-04-26 20:52:47
    数组首地址与数组名取地址的区别
  • 数组首地址为一个常量,而指针是一个变量 数组首地址不可以作为左值(常量不可以作为左值),而指针可以 指向数组首地址的指针在功能上等同于数组首地址,使用sizeof时候数组首地址等同于数组本身 ...
  • 本代码将证明数组名非数组首地址,本代码遵守开源精神,转载请保留作者信息,修改请在History处添加信息
  • 如果定义一个数组a[ ],则数组名a和&a[0]表示数组首元素的地址,而&a则表示数组的首地址,通过下面这个经典的程序则可以理解它们的区别 # include int main() {  int a[5] = {1,2,3,4,5};  int* p = a+1; ...
  • 很多同学在接受C语言程序设计教育的时候,总会被灌输这样一个概念:数组名即数组首地址,然而事实并非如此,当我们通过sizeof这个指令测量数组名与被赋值了数组名的指针时,我们会发现两者的长度是不一样的。...
  • C语言——数组名、取数组首地址的区别(一)

    万次阅读 多人点赞 2017-03-26 20:57:41
    数组名array、&array的区别 3. array、&array的区别表现在什么地方 4. 讨论 5. 参考 1.开篇 很多博客和贴吧都有讨论这个话题,各有自己的表述方式,今天在他们的基础上我将继续试着以我自己理解的方式...
  • 数组和指针向来就是傻傻分不清,当他们一起出现的时候就更加懵逼。使用实例详细解析:数组名a、数组名取地址&a、数组首地址&a[0]、数组指针*p
  • C++数组首地址

    千次阅读 2011-01-06 11:09:00
    C++,数组首地址,指针
  • C语言中数组首地址和数组第一个元素的地址关系如下: 1、它们的地址值是相等的。 2、第1个元素的地址如果是p,则p+1就是第2个元素的地址。 3、数组的首地址如果是p,则p+1就跳过这个数组而指向这个数组最后一个...
  • 数组a与指向数组首地址的指针p不同之处——存储空间 C 语言中数组名有着特殊的含义,他代表着存放数组元素连续内存空间的首地址。尽管当将指针p初始化指向数组a的首地址后,使用*(a/p+i)都可以访问到数组第i个元素...
  • c语言中数组名代表数组首地址,它的值在运行期间可以改变吗? c语言中数组名代表数组首地址,它的值在运行期间是固定不变的,但是在main函数的参数中对指针数组名却可以出现类似于argv++的操作(谭浩强老师的c程序...
  • 数组首地址取地址

    千次阅读 2016-03-11 18:03:46
    一、问题来由普通指针可被修改导致地址偏移:#include using namespace std;int main(int argc,char *argv[]) { int a = 6; int *p = &a; //p存放一个地址,pp存放p的地址,上面的代码可以让p存放的地址偏移 ...
  • array是整个数组array的首地址,array是数组首元素的首地址(和&array[0]一样),其值相同,但是“意义不同”。 我们知道array是数组首元素的首地址(和&array[0]一样),&array是整个数组array的首地址...
  • 数组名的含义 一、代表整个数组 定义数组 ...二、代表数组首地址 不是上面三种情况时 int a [4] = {1,2,3,45}; int *p = a; //a代表首元素地址---->&a[0] p = a+1; //a代表首元素地址--
  • 数组首地址的理解

    2018-07-17 15:08:00
    int a[4]={1,2,3,4}; &amp;a为数组的首地址,a为数组的首元素的首地址 &amp;a+1为加一整个数组a的大小 a+1为加数组a一位的大小
  • 数组首地址给赋给 指针的问题

    千次阅读 2016-05-15 16:36:40
    #include #include void sort(int* in, int len, int** out); void sort(int* in, int len, int** out) ... //把数组首地址给out指针,在此时,是正确的!  //也就是in, out 指向的是同一内存区域!
  • C语言-取数组首地址

    2021-03-10 12:18:34
    我们先看下面这段代码: #include <stdio.h>...arr操作的是整个数组,返回的指针指向整个数组,&arr+1偏移的是整个数组的长度。 printf("%p %p \n",arr,&arr); printf("%p %p \n",arr+1,
  • 数组名就是数组首地址

    千次阅读 2018-03-22 23:16:40
    #include&lt;stdio.h&gt;#include&lt;string.h&gt;void main(){ char a[20]={"abcdefg"}; char b[20]={"higklmn"}; strcpy(a+7,b); char *x; char *y; x=a+1;...,b
  • 一般情况下声明一个数组之后,比如int array[5],数组名array就是数组首元素的首地址,而且是一个地址常量。但是,在函数声明的形参列表中除外。 在C中, 在几乎所有使用数组的表达式中,数组名的值是个指针常量,也...
  • 能对字符数组名赋值?不能。为什么有的视频出现了这种操作?
  • 关于数组首地址

    千次阅读 2014-08-26 10:11:09
    但是test 和 &test不是一回事,前者表示第一个元素的地址,数值上和数组首地址相等,后者虽然好像是对地址再取地址,即使一个指向数组的地址,相当于char(*)[10] = &test,但是他却得到的是整个数组首地址,两者值...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 174,221
精华内容 69,688
关键字:

数组首地址