189 8069 5689

c语言子函数传指针出来 C语言函数传指针

c语言的传值与传指针的问题

其实简单来说, 如果CreateData()和Print()这二个函数是正确的, 你只要分别看一下CreateData()和Print()的函数原型:

十多年的珠海网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网整合营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整珠海建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“珠海网站设计”,“珠海网站推广”以来,每个客户项目都认真落实执行。

1. int CreateData(Lcountry *head): 它的输入参数类型是 Lcountry *, 也就是Country **, 而 "head"是Country *型, 所以传给CreateData时, 应该取 head, 也即为 Country **型.

2. void Print(Country* p): 它的输入参数类型就是Country *, 而 "head"正是Country *型, 所以只要给它传 "head"就可以.

3. "head"和"head"都是指针, 都是地址, "head"是"*head"的地址, 而"head"是"head"的地址.

关于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;

}

}

请问在C语言中,如果我在一个函数里申请一个指针,怎么能让他传进去的数值。从函数里传出来呢。

如果你只需要传出一个值,把这个值放在return后面,

例如 子函数fun中return p;然后调用时用 t=fun()就可以了。

如果需要传回多个值,需要二级指针。

比如fun(int** p){p=0;}

Main()

{ int *q;

fun(q);

}

调用有q的值就变成0了。

当然由于你说的是将指针传出,所以p需要是二级指针,如果是一般变量的话,p只需要是一级指针就可以了。

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

不知下列代码对你是否有用

记住:C中只有_值_传递!

#include conio.h

#include stdio.h

void fun(int **pp, int *i);

int main(void)

{

int *p, i;

i = 88;

fun(p, i);

printf("%d\n", *p);

getch();

return 0;

}

void fun(int **pp, int *i)

{

*pp = i;

}

或者

#include conio.h

#include stdio.h

#include stdlib.h

#define N 100

void getmemory(int **pp, int n);

int main(void)

{

int *p, i;

getmemory(p, N);

for (i = 0; i N; i++)

p[i] = i;

for (i = 0; i N; i++)

(i+1)%10 ? printf("%3d", p[i]) : printf("%3d\n", p[i]); /*输出0~99*/

getch();

return 0;

}

void getmemory(int **pp, int n)

{

*pp = (int *)malloc(n * sizeof(int));

}

C语言指针与函数传递问题,急急急!

所谓对应其实是参数形式上的对应。上面的两个函数都要求传递一个指针类型。并且还是双指针类型。c的编译器执行的是字面上的语义检查,并不实际追究这个参数真是子函数需要的。而你传递参数的正确与否在运行时才能反映出来。尤其是指针,传递一个错误的指针基本会导致你的程序运行不成功,或者直接终止运行。

上面你的代码中你给你的子函数传递一个int 类型的值,编译器肯定会报错,但是你用显式类型转换将int转换成双指针类型就骗过了编译器。比如这样:

int test=0x00400000;

shell_sort((char**)test,n);

编译通过,运行必然出错。

c语言传递函数指针

intcmp是和GetKeyFunc_t对应起来的。

而你现在错在了CmpFunc_t这个函数参数上了。

你把怎样的函数参数指针传给了BST_t *newBST?

你没交代清楚啊,你把错误指针传给newBST函数的第一个参数,编译器肯定报错了。你给了那么多代码,关键你把什么传给了BST_t *newBST的第一个参数?给一下你调用这个newBST函数的代码,而且要你传给该函数第一个参数的参数定义。

另外给个建议:定义函数时,记得对传进来的参数进行合法性检验。多加几行代码是很有必要的,能增强函数的健壮性。(微软也好,ISO也好,都对大部分函数设计时要求做必要的合法检验)


分享文章:c语言子函数传指针出来 C语言函数传指针
转载源于:http://cdxtjz.cn/article/hgejjp.html

其他资讯