中易网

不用指针的形式,将数组传到子函数中

答案:1  悬赏:0  
解决时间 2021-02-12 17:11
不用指针的形式,将数组传到子函数中
最佳答案
数组只能通过指针传递,不能通过值传递。
数组参数属于指针参数,指针参数即时传址参数(或叫引用参数), 如果想在函数中修改参数的值, 这是唯一的途径.
如果把数组当作参数, 不管愿意与否, 它就是指针, 指向第一个值的指针.
1. 数组参数就是指向第一个元素的指针: #include <stdio.h>
void getArr(int p[], int si);
int main(void)
{
int ns[] = {1,2,3,4,5};
getArr(ns, sizeof(ns)/sizeof(ns[0]));
getchar();
return 0;
}
void getArr(int p[], int si) {
int i;
for (i = 0; i < si; i++) {
printf("%d\n", p[i]);
}
}
2. 干脆直接声明为指针: #include <stdio.h>
void getArr(int *p, int si);
int main(void)
{
int ns[] = {1,2,3,4,5};
getArr(ns, sizeof(ns)/sizeof(ns[0]));
getchar();
return 0;
}
void getArr(int *p, int si) {
int i;
for (i = 0; i < si; i++) {
printf("%d\n", p[i]);
}
}
3. 即使你在形参中指定维数也不起作用: #include <stdio.h>
void getArr(int p[2], int si);
int main(void)
{
int ns[] = {1,2,3,4,5};
getArr(ns, sizeof(ns)/sizeof(ns[0]));
getchar();
return 0;
}
void getArr(int p[2], int si) {
int i;
for (i = 0; i < si; i++) {
printf("%d\n", p[i]);
}
}
4. 既然是指针, 其值就有被修改的可能: #include <stdio.h>
void getArr(int p[], int si);
int main(void)
{
int ns[] = {1,2,3,4,5};
size_t i;
getArr(ns, sizeof(ns)/sizeof(ns[0]));
for (i = 0; i < sizeof(ns)/sizeof(ns[0]); i++) {
printf("%d\n", *(ns+i));
}
getchar();
return 0;
}
void getArr(int p[], int si) {
int i;
for (i = 0; i < si; i++) {
p[i]++;
}
}
5. 如果是字符数组, 它自己能判断数组尾界: #include <stdio.h>
void getArr(char p[]);
int main(void)
{
char ns[] = "ABCDEFG";
getArr(ns);
getchar();
return 0;
}
void getArr(char p[]) {
int i;
for (i = 0; p[i]; i++) {
printf("%c: %d\n", p[i], p[i]);
}
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
中国供销合作社地址在什么地方,想过去办事
白月光英文版的名字是什么
住房公积金里的钱怎么查
安信二手车在哪里啊,我有事要去这个地方
我带着女儿和一个男的相处,他也有女儿和一个
优分期贷款怎么申请呀,
表示梦到旧情人了,有一点伤感,该怎样表达出来
百分表是用来测量什么的?
龙韵祥我想知道这个在什么地方
地摊卖钱包 好吗
戴氏高考中考培训学校蜀西路总校地址在什么地
有关跳高比赛的规则
iPhone开关键反应迟钝正常吗
新德园小区这个地址在什么地方,我要处理点事
通达信如何除权时复权,除息时不复权
推荐资讯
看花灯用英语怎么说?
单里村在什么地方啊,我要过去处理事情
黄田坝辖区青少年活动中心地址在哪,我要去那
红园新村路/S309(路口)怎么去啊,有知道地址
安下面一个一字下面-个叩字打一成语
WPS文字如何快速输入横线?
为什么金鱼买回来时会吃鱼食,第二天之后就不
就是因为我在一天内唱了很多次歌,造成嗓子不
小牛犋我想知道这个在什么地方
我要把我的帽子找回来的读后感怎么写
明年买大马力拖拉机的购机补贴额度是多少?
花园小区东门在什么地方啊,我要过去处理事情
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?