A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© atlas 中级黑马   /  2014-10-15 09:24  /  3974 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. intarray[20];
  2. int*ptr=array;
  3. ...
  4. //此处略去为整型数组赋值的代码。
  5. ...
  6. for(i=0;i<20;i++)
  7. {
  8. (*ptr)++;
  9. ptr++;
  10. }
复制代码

代码如上,int*ptr=array; 这里的array应该表示的是数组中的第一个值吧,为什么这里声明为指针的时候不加"&"符号。

评分

参与人数 1技术分 +1 收起 理由
星河鹭起 + 1

查看全部评分

12 个回复

倒序浏览
int*ptr=array貌似这句的话意思是这个指针指向array数组首元素的地址。
所以我认为数组实际上是用地址来保存数据的,首元素保存一个地址值,然后根据数组的数据类型保存下个地址值。
它不是值传递而是地址传递。
回复 使用道具 举报 1 0
数组名在C语言中表示数组在内存的起始地址,你说的数组的第一个元素值的表示为:array[0].
这里你可以将数组名理解为指针,用*array就能获取第一个数组元素的值。

至于你要是想问为什么数组名就能表示内存的起始地址,这就是C语言的规范了,就像为什么整形用int一样
回复 使用道具 举报
这个问题我之前也问过,关于指针与数组的问题,谭浩强的c语言书里讲的很仔细,二楼说的不错。
回复 使用道具 举报
int *ptr = array这个语句是对的??   我觉应该是 int *ptr;  ptr = array; 数组名就是整个数组的首地址
回复 使用道具 举报
John_chow 发表于 2014-10-15 11:28
int *ptr = array这个语句是对的??   我觉应该是 int *ptr;  ptr = array; 数组名就是整个数组的首地址 ...

应该是对的,这里的int* ptr=array;你应该理解为int*就是一个整体,只是给指针ptr进行赋值。而*ptr和int* ptr是不一样的,*ptr表示指针所指向内存中的值(也可是地址,也可不是地址),而int* ptr中你没看见中间有个空格吗,这表的* ptr表示的没有意义,int* ptr应该分为两部分,int*表示指针的类型,ptr表示指针。

点评

赞一个。  发表于 2014-10-15 14:14
回复 使用道具 举报
Lxy 中级黑马 2014-10-15 11:37:04
7#
数组名就是首地址,数组第一元素的地址也是首地址,所以以下两种赋值方式是一样的:
int*ptr=array;
int * ptr = &array[0];
回复 使用道具 举报
atlas 中级黑马 2014-10-15 14:05:36
8#
如图详细介绍了一维数组的地址表示

1.jpg (75.78 KB, 下载次数: 36)

1.jpg
回复 使用道具 举报
#include <stdio.h>

int main()
{
  int arr[10]={10,2,2,3};
  int *p = &arr[0];
  int *p1 = arr;
  printf("*p = %d\n",*p);   
  printf("p = %p\n",p);     
  printf("arr = %p\n",arr);
  printf("p1 = %p\n",p1);
  printf("&arr[0] = %p\n",&arr[0]);
  while(1);
  /*输出结果为:
     *p = 10
      p = 0022FF10
     arr = 0022FF10
     p1 = 0022FF10
     &arr[0] = 0022FF10
     总结:数组首地址 = 第一个元素的地址 *p指向的是第一个元素的值也就是10;  
  */
  
  return 0;
}
回复 使用道具 举报
数组名 表示该数组第一个元素的地址 而非第一个元素的值   a[0]表示第一个元素  a 表示数组a[]的第一个元素的地址
指针肯定指向数组 所以不需要加取地址符
回复 使用道具 举报
米匠 中级黑马 2014-10-15 15:48:30
11#
array不是数组的第一个元素,而是第一个元素的地址,也是array数组的地址,所以不用加&
回复 使用道具 举报
这么大神,学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马