| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 991 人关注过本帖
标题:指针与数组
只看楼主 加入收藏
hykj9495
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:796
专家分:1441
注 册:2016-6-6
结帖率:95.92%
收藏
已结贴  问题点数:20 回复次数:4 
指针与数组
#include<stdio.h>
void f(int *pArr,int len)
{
    pArr[3]=88;
}
int main(void){
    int a[6]={1,2,3,4,5,6};
    printf("%d\n",a[3]);
    f(a,6);
    printf("%d\n",a[3]);
    return 0;
}
/*   *pArr[3]与a[3]是同一个变量,他们互为拷贝,实际内容一样
我的理解是数组名是一个地址,*PArr通过函数传递的是数组的地址。所以定义函时不需要取地址了。
这个程序的作用是修改数组的值,所以
printf("%d\n",&a[3]);输出地址违背题意。
 
   体会
   变量名与变量实际内容联系紧密,就像房子门牌号与房子里的人一样。又相互独立。
搜索更多相关主题的帖子: 门牌号 return 
2016-06-11 14:09
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:8 
这要看你传递给子函数的地址是什么了,在不考虑代码运行出错的前提下,它可以是数组a任何一个数的地址。
如果你是想说pArr[3]与a[3]是同一变量,他们互为拷贝,实际内容一样。这就要看传送给子函数的地址是什么了。除非是数组a的首地址,不然
pArr[3]和a[3]不同一变量。
如果你*pArr[3]没输入错,那你真的要去看下什么是指针数组了。
2016-06-11 16:19
随风飘荡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:208
专家分:598
注 册:2011-9-9
收藏
得分:12 
知道他怎么用就行了
数组名只是数组名,用来给编译器及用户标示某特定内容的名字。
但他可以是一个表达式,就如同别的变量一样,不同的就在如果不带下标的就会是地址,带下标的就会是内容。
2016-06-11 16:23
hykj9495
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:796
专家分:1441
注 册:2016-6-6
收藏
得分:0 
回复 2楼 linlulu001
没有输入错误。
这个程序默认输入首地址
这是一个特列,谢谢,我记住了

[此贴子已经被作者于2016-6-11 16:42编辑过]


慢慢调试
2016-06-11 16:34
Alar30
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:10
帖 子:988
专家分:1627
注 册:2009-9-8
收藏
得分:0 
从错误中吸取经验哈
2016-06-12 10:16
快速回复:指针与数组
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025812 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved