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

c语言中函数的指针参数传递

发布时间: 2022-01-22 06:00:49

⑴ 请问在c语言中,函数传参时怎样利用指针传递数组

数组名就是指针,例如:

#include <stdio.h>

voidpr(char *p)

{

printf(p);

}

void main(void)

{

char s[] = "abc";

pr(s);

}

(1)c语言中函数的指针参数传递扩展阅读:

注意事项

非数组类的声明尽量以指针的方式进行比较好。倘若一个指针指向的内存并不是一个数组,那么采用数组名的声明方式或许就会给人产生错误的引导。类似的,如果指向的是一个数组区域,则会给人以更加丰富的信息。例如:

int main(int argc,char* argv[])

{

/* code here */

}

int main(int argc,char** argv)

{

/* code here */

}

两种方式完全等价,但是前面一种能够更清晰地看出:这个参数是指向某个元素起始地址的指针,而后面的这种方式则不能够直观地看出这种含义。

⑵ C语言中指针变量如何向函数中传递

指针变量中存储的也是一个值, 比如子函数收到传递来的参数值为:3647829, 可以是数值, 也可以是指针地址, 就看你子函数定义成什么类型的参数

⑶ 关于c语言中指针的指针作为函数参数的问题

clrscr()当然不能用啊 如果你是在VC6.0的环境中编译的话
这个函数只能在TC中用,在VC中就不能用了
如果用Turboc2.0的话,我记得不用包含那个头文件,直接就可以用的。它是C的图形函数,C++里不能用了。
你是不是以前用TC写程序啊?我也是,刚转成VC时也不太习惯。VC6.0里包含#include <stdlib.h> 这个文件,想刷屏时就system("cls"); 便能起到相同的效果。

⑷ 关于C语言函数参数中指针传递的疑问

OS_EVENT应该是一个结构体的名字把 OS_EVENT*pevent表示L是指向OS_EVENT类型的结构体的指针 这个时候用OS_EVENT->(属性)

OS_EVENT L表示L就是一个OS_EVENT类型的结构体 这个时候用OS_EVENT.num

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

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

⑹ C语言 使用子函数的函数参数传回指针的方法

楼主的意思就是C里面是怎么带回返回值的?
void fun( int *p )
{
.....
}
void main()
{
int a = 0;
fun( &a );
}

⑺ C语言中指针作为函数参数的问题。

更正以下楼主的问题补充,swap函数的两个参数,定义的时候,定义p1和p2,他们都int*类型的,也就是两个整型指针的类型。主函数传递进来的是a和b的地址,swap函数是将两个地址的值,也就是*p1和*p2交换,达到的效果是将两个地址上的值交换

⑻ C语言中 局部指针变量传给函数参数的过程

没打印
直接挂掉
你的P没有初始化 是野指针
于是ptr的值也就是随机值
赋值*ptr导致野指针赋值,非法访问,挂掉。

⑼ C语言中 指针做函数参数传递二维数组

#include <stdio.h>

void fun(int (*p1)[3],int (*p2)[3]);

int main()

{

int p1[3][3]={{7,8,9},{4,5,6},{1,2,3}} ;

int p2[3][3] = {0};

int i = 0, j = 0;

fun(p1,p2);

for(i = 0;i < 3;i++){

for(j = 0;j < 3;j++){

printf("%d ",*(*(p2+i)+j));

}

printf(" ");

}

return 0;

}

void fun(int (*p1)[3],int (*p2)[3])

{

int i = 0,j = 0;

for(i = 0;i < 3;i++){

for(j = 0;j < 3;j++){

*(p2[j]+i) = *(p1[i]+j);

}

}

}

(9)c语言中函数的指针参数传递扩展阅读:

函数指针的声明方法为:

返回值类型 ( *指针变量名) ([形参列表]);

其中,“返回值类型”说明函数的返回类型,“(指针变量名 )”中的括号不能省,括号改变了运算符的优先级。若省略整体则成为一个函数说明,说明了一个返回的数据类型是指针的函数,后面的“形参列表”表示指针变量指向的函数所带的参数列表。例如:

int func(int x); /* 声明一个函数 */

int (*f) (int x); /* 声明一个函数指针 */

f=func; /* 将func函数的首地址赋给指针f */

或者使用下面的方法将函数地址赋给函数指针:

f = &func;

赋值时函数func不带括号,也不带参数,由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码的首地址。

网络-函数指针

⑽ 关于C语言函数传递指针参数,帮我看看我的程序

你的地址值传递错误,按照我给你修改的试试看,一定要注意你的实参传递的是地址还是具体的值,如果是地址,在子函数中就不要去修改你传递进来的地址。
int
main(void)
{
int
data=0;
//此处随机分配内存空间,不要用指针
myStack=makeStack(myStack,top);
Push(myStack,3);
Push(myStack,8);
Push(myStack,19);
Push(myStack,31);
Push(myStack,43);
Push(myStack,36);
Pop(myStack,&data);//此处,传递的是地址值
printf("%d
",data);
}
int*
Pop(LinkedStack
myStack,int
*data)
{
pStack
cursor=myStack;
if(Stack_Empty())
{
}
else
{
while(cursor->next!=top)
{
cursor=cursor->next;
}
*data=top->data;
//此处,只是在同一个内存空间修改其值,所以不要取地址
top=cursor;
return
data;
}
}