⑴ 请问在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;
}
}