中易网

c语言数组如何在函数中传递?不要指针传递

答案:2  悬赏:60  
解决时间 2021-03-05 23:37
c语言数组如何在函数中传递?不要指针传递
最佳答案
数组只能通过指针传递,不能通过值传递。
数组参数属于指针参数,指针参数即时传址参数(或叫引用参数), 如果想在函数中修改参数的值, 这是唯一的途径.
如果把数组当作参数, 不管愿意与否, 它就是指针, 指向第一个值的指针.
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]);
}
}
全部回答

c语言中、数组在函数中的传递可以数组元素的传递!还有就是数组名的传递!其实、数组名的传递类似指针!就是把数组的元素的首地址传到形参的!

我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
王姓女孩家字辈,要带木的名字
wow 爱与家庭 和 达隆郡之战的问题
怎么把ipad里下载的视频照片导入到电脑里
男人喜欢自己爱的女人对自己撒娇吗?喜欢自己
没有鉴定工伤的医药费可以报农村医保吗?
我弟犯了寻畔滋事罪对方要求赔钱就撤诉我想知
怎么找回QQ,不知道号码
沈阳华晨汽车4S店在哪里
制作丝印菲林输出的线条宽度和线距能精确到0.
《口袋妖怪》刚抓来的野生精灵(没参加过任何
怎样制做蜂箱里的蜂巢
两公马连续配一母先后快速、答案
两个字情侣网名。纯字,无符号。 如 - 惜丶兔
BIGBANG上海演唱会曲目。
网络密码忘了如何做
推荐资讯
拼音要怎么打粤语教教我谢谢
现在在上海上班怎么补交社保
iebook怎样在目录中设置超链接
vb如何实现输出记事本内容到文本框
有没有很容易通过的口子?
富源铝塑门窗不锈钢地址有知道的么?有点事想
怎么入侵网关,修改网关里的mac地址绑定设置
方田村地址有知道的么?有点事想过去
大岩桐花钱哪里能买到
关于对手的事实论据
英语 请问这个old怎么解释?
40公斤电子秤传感器和150公斤传感器能通用吗
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?