当前位置:首页 » 编程语言 » c语言自定义函数传数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言自定义函数传数

发布时间: 2023-04-16 09:52:08

c语言:创建一个函数,通过实参向形参传递值方式实现数值传递

你这个问题很奇怪,首先一维数组存不搏毕了好几铅棚个单词,除非用二维数组,或是指针。

但是这个字符串要想实现值传递的话很是别扭的,用指针还行.而且这个循环可以放在主函数中的。

main()
{
void outPut(char a[]);
char words[5][4]={"how","do"槐银则,"you","do","!"};
int i=0;
for(i=0;i<5;i++)
outPut(words[i]);
}

void outPut(char a[])
{
printf("%5s",a);

}

⑵ c++,如何在自定义函数如int myfun(void)中传出传出一个数组,例如d[3]={1,2,3}

通常是主调函弯渗数将数组首地址作为参数传递给被调函数,被调函数将结果存放在数埋如脊组中即可。
C语言不支持将整个数组返回,只能返回数橡尺组首地址。

⑶ 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语言函数的值传递

p函数就是个冒泡递减排序功能。标准函数头写法应该是void p(int a[])而不是void p(int a[5]),即使写成void p(int a[5]),编译器也山历是按void p(int a[])解释而不按void p(int a[5])解释,而且这里a[]的意思就粗唯缓是定义a是int *型指针。函数p中并没有改变a,改变的是a指岩模向的目标a[0]~a[4]。所以不知你问的具体是啥意思……

⑸ C语言问题:自定义函数参数传递pow(n,n--),例如n=4,为什么传入的值是3,4

你运行一下以下代码,返启不可哗扰能啊!

#include<stdio.h>
voidfun(乱世旦intx,inty)
{
printf("x=%dy=%d ",x,y);
}
voidmain()
{
intn=4;
fun(n,n--);
}
输出x=4y=4

⑹ 【C语言】实现一个函数,传递一个整数参数

代码如下,培败望采纳:

#include<stdio.h>
intfunc(int配拍颤n)
{
inti,result=0;
while(n!=0)
{
i=n%10;
result=result*10+i;
n/=10;
}
returnresult;
}
intmain()
{
inti,n,result=0;
printf("请输入任意一个整数: "贺掘);
scanf("%d",&n);
result=func(n);
printf("按位翻转的结果为:%d",result);
return0;
}

⑺ c语言自定义函数怎么带参数

举个栗子,比如计算a+b的值的函数

#include<stdio.h>
intplus(inta,intb)
{
intc=a+b;//2.此处定义的c无法被主函数直接调用,因为c为局部变量
returnc;//3.要返回计算结果,只能用return语句
}
intmain()
{
inti=5,j=7;
intans=plus(i,j);//1.该过程中,首先将i,j作为参数(与上面的plus函数说明(m,n)一一对应)传递给plus函数。
printf("%d",ans);
}

⑻ C语言自定义函数怎么传参,是一次性把数组的数据全部传入吗

1、因为数渣睁液组在内存中是一块连续的内存,只要将该数组的首地址传进去,当然就可以访问整个数组了。值得注意的是,由于只传了首地址,函数不知道数组的维数,所以还得把数组的维数传进去,那就可以完全操作早键该数组了。x0dx0ax0dx0a2、例:有一个函数声明:void fun( int aa[],int size );或如物者void fun( int *pa,int size );x0dx0a以上两种声明都一样。x0dx0a调用上诉函数时:假设有 int ab[10];x0dx0afun( ab,10 )就可以了。

⑼ C语言怎么向自定义函数中传入一个数组,处理完再返回新的数组

看你的代码。

你问题并不在数组传入。你函数mymd5接收password数组,mymd5的password数组变量和外部函数的password地址相同,所以改变其中外部函数的数组也改变。

但你mymd5返回的数组decrypt,是局部变量,当mymd5调用结束,这个数组的内存空间就释放了。你接收了也是NULL。所以要用malloc或calloc申请动态内存。这样不会被释放。

我写了简单案例,你参考:

#include<stdio.h>
#include<malloc.h>
#include<string.h>

char*md(chara[]);//错误的数组返回
char*md2(chara[]);//正确的数组返回
intmain()
{
charpassword[10]="123456789",*decrypt=NULL;
decrypt=md(password);
printf("外部函数传递数组到子函数,子函数改变,外部函数也改变,password=%s ",password);
printf("错误返回方式:局部变量,外部函数接收失败,被自动释放,decrypt=%s ",decrypt);
decrypt=md2(password);
printf("正确返回方式:动态申请,外部函数接收成功,不会被自动释放,decrypt=%s ",decrypt);
return0;
}
char*md(charpassword[])
{
chardecrypt[10]="*********";
password[0]=0,strcpy(password,"abcdefghi");
returndecrypt;
}
char*md2(charpassword[])
{
char*decrypt=(char*)malloc(sizeof(char)*10);
if(!decrypt)
returnNULL;
strcpy(decrypt,"*********");
password[0]=0,strcpy(password,"abcdefghi");
returndecrypt;
}

⑽ C语言,求解! 编写用户自定义函数,传入一个十进制整数,传回其二进制表示。

#include<stdio.h>
char*dec2bin(char森陆*x,intn)
{inti,j;
charc;
for(i=-1;n;n/=2)
x[++i]=n%2+'此顷顷0';
x[i+1]=0;乎派
for(j=0;j<i;)
{c=x[j];x[j++]=x[i];x[i--]=c;}
return&x[0];
}
intmain()
{chars[33];
printf("%s ",dec2bin(s,35));
return0;
}