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

c语言指针的参数

发布时间: 2022-09-27 06:33:28

c语言指针参数问题

因为p的类型是char*
*p的类型是char

a()需要的参数是char*
所以需要传入的是p而不是*p

② ★C语言 指针作函数参数

首先说明一下,你这段代码差一个}
应该是
#include
void fun(char *c,int d)
{
*c=*c+1;d=d+1;
printf("%c,%c,",*c,d);
}

main()
{
char b='a',a='A';
fun(&b,a);
printf("%c,%c\n",b,a);

在fun中的输出,可以说明是对两个参数作了增一操作*c=*c+1; 说明是对指针指向的内容作+1操作,会影响函数外c指向的内空变化;而d=d+1只是表示对d这个参数作+1操作,不会对函数外的实际参数变化。
所以第一次输出的两个数是b,B 而第二次输出的应该是b,A.
%e表示按科学记数法输出浮点数,用在这里是错误的。应该是%c.
所以正确的答案应该是b,B,b,A

③ C语言用指针作函数参数

选D
因为第一个参数是地址传递,fun(&b,a);中传入a字符。*c=*c+1将c的值变为b字符。主函数的值改变。
第二个参数是值传递,所以在函数中d的值为B字符。但是并不影响主函数的值,所以主函数输出a的值是A。b的值是b。

④ C语言用指针作函数参数

选D
因为第一个参数是地址传递,fun(&b,a);中传入a字符。*c=*c+1将c的值变为b字符。主函数的值改变。
第二个参数是值传递,所以在函数中d的值为B字符。但是并不影响主函数的值,所以主函数输出a的值是A。b的值是b。

⑤ C语言的指针作函数参数

改成下面代码看看:

#include<stdio.h>

voidabc(int*i,int*j)

{

intm;

m=*i;//指针变量的值也就是地址不能赋值给一般变量
*i=*j;//*i,*j才是指针变量指向的变量的值
*j=m;

}

voidmain()

{

inta,b;

int*pa=&a,*pb=&b;

printf("请输入a,b的值:");

scanf("%d,%d",&a,&b);

abc(pa,pb);//

printf("a=%d b=%d ",a,b);

}

⑥ c语言指针型参数问题

createList_L函数定义有问题,它输入的参数是指针L的值,
函数内部对L赋值,并不会对L本身产生作用
应该是createList_L(LNode **L, int n)
然后*L=(LinkList)malloc(sizeof(LNode));
main函数中这样调用createList_L(&L, 1);
可以体会下两种写法的区别,然后搜索下“函数 传值 传地址”

⑦ C语言指针参数

改变形参position的值不会影响实参p,这是典型的传值调用,形参只是实参的副本而已

⑧ C语言指针作为函数参数

#include<stdio.h>
int*fmax(int*,int*);/*函数的声明和下面的定义参数类型不一致,应该改成指针类型*/
voidmain()
{
intx,y;int*c,*d;
int*pmax;
scanf("%d%d",&x,&y);
c=&x;
d=&y;
pmax=fmax(c,d);
printf("max=%d ",*pmax);
printf("max=%d ",*pmax);
}
int*fmax(int*a,int*b)
{
int*p;
p=*a>*b?a:b;
returnp;
}

⑨ C语言 指针做参数

一看就知道是个初学者吧,就按照你自己的思路,给你解释一下编译出错的信息吧。

错误1: password没定义,某些编译器要求将要调用的函数在前面声明,或将该函数定义在主函数之前。 解决方法两种:1。在main()之前加上一句 int password(char *,char *);
2. 将
int password(char *p,char *q)
{ int a;
。。。。。。
}
整个放到 main()之前。

错误2~5: strcmp(*m,*n) 应该换成strcmp(m,n), m,n已经定义为字符指针,理解为字符串。而*m,*n则是两个字符串的第一个字符。

⑩ c语言中指针作函数的参数是怎么回事有点不懂!!!

如果使用指针作为参数就是地址传递,否则只是值传递。你可以看下下面的这个函数:
void modify(int a)
{
a++;
}

void main()
{
int a=5;
modify(a);
printf("%d",a);
}
这个程序的答案还是5。为什么?
因为当调用modify(a)时,在执行modify函数时,是另外开辟了一个内存空间,将main中a的值复制过来,modify函数中所有的操作都是相对于这个新开辟的内存空间而言的,对原来的a没有任何改变。

现在就来说说指针,如果用指针传参的话那就完全不一样了,指针(pointer),说白了即是指向变量内存地址。同样上面的例子:
void modify(int * a)
{
(*a)++;
}

void main()
{
int a=5;
modify(&a);
printf("%d",a);
}
这个答案当然是6
因为你传进去的是a的地址,所以在modify函数中的操作都是对a地址上的内容进行操作,即是操作a所以modify函数不用返回这个数,main中a的值也会改变。因为大家都是操作同一个内存空间,而上面不用指针,modify操作的是另一个新开辟的内存空间,只是这个内存空间初始值和a一样。

你在子函数中要对你的主调用函数中变量进行操作时也可以用指针做参数,这样子函数就可以不用return 如果不是用指针的话,就要再子函数的未尾加上一条return x;把这个数返回当返回值。