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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冰儿 初级黑马   /  2015-4-30 22:11  /  1209 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#include <stdio.h>

void test();

int main()
{
    int ages[5]={18,46,24,56,22};
   
    test(ages);
   
    return 0;
   
}
void test(int *array)
{
    printf("%d\n",*array);
   
}
这个函数中,当调用test函数时,是把数组ages的地址传给了指针array,也就是说指针array指向了数组的地址,可是老师在视频中说,指针指向数组的首地址和指向数组是不一样的,不是说数组的地址就是数组元素的首地址吗,难道老师说的是单纯的数组,不是数组的地址吗,详见视频c语言指针第9课27分钟左右,求解答

5 个回复

倒序浏览
是一样的,老师讲错了,要不你把原话发出来看看,你说的这句”指针指向数组的首地址和指向数组是不一样的“,是一样的
回复 使用道具 举报
数组名作为函数参数传递时, 传递的是数组首元素的地址, 类型为数组元素同类型的指针.  这样就可以方便对数组内任一元素进行访问和修改.

数组名, 不作为函数参数时,代表的是整个数组, 虽然数值和数组首元素的地址值相同 ,但表示的意义却并不相同
指针有类型, 而类型是说明指针指向地址处可以访问和操作的内存大小, 如 int arr[5];  arr表示这块内存开始的整体大小
同样指向数组元素的指针和指向数组的指针当然意义也是不一样的

  1. //
  2. #import <Foundation/Foundation.h>

  3. void test(int *pArray)
  4. {
  5.     NSLog(@"%p", pArray);
  6. }

  7. int main(int argc, const char * argv[])
  8. {
  9.     int arr[5] = {0};
  10.    
  11.     NSLog(@"sizeof(arr) = %ld", sizeof(arr)); // 数组的大小 这里arr代表整个数组
  12.     NSLog(@"sizeof(&arr) = %ld", sizeof(&arr)); // 数组首地址的大小
  13.     NSLog(@"sizeof(&arr[0]) = %ld", sizeof(&arr[0])); // 数组首元素地址的大小
  14.    
  15.    
  16.     NSLog(@"%p", &arr); //表示数组开始的地址
  17.     NSLog(@"%p", arr); // 表示数组第一个元素的地址
  18.     NSLog(@"%p", &arr[0]); // 同上表示数组第一个元素的地址
  19.     test(arr); // 同上数组名作参数 传入的是数组第一个元素的地址
  20.    
  21.     int *p = arr; // 指向数组首元素的指针 这里的arr代表首元素的首地址
  22.     int (*p2)[5] = &arr; // 指向数组的指针 这里的&arr表示数组的首地址
  23.     NSLog(@"p = %p   p2 = %p", p, p2);
  24.    
  25.    
  26.     p += 1; // p = p + sizeof(数组元素类型)*1 ----> p = p + 4
  27.     p2 += 1;// p = p + sizeof(数组)*1;      -----> p = p + 20
  28.     NSLog(@"p = %p   p2 = %p", p, p2);
  29.    
  30.    
  31.     return 0;
  32. }
复制代码



回复 使用道具 举报
定义的时候的*和使用时候的*是不一样的,定义的时候仅仅表明它是指针,而用的时候则表示这个指针指向数据的内容
回复 使用道具 举报
谢谢大家,明白了
回复 使用道具 举报
数组元素的首地址,是能够确定这个数组,因为,一个数组里,每一个元素内存都给他分配了地址,只是这些地址都是连续分配的,所以数组的首地址就确定了这个数组内存分配,但是利用数组的首地址取出来的是一个元素,不是一个数组里所有的元素
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马