十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
指针变量中存储的也是一个值, 比如子函数收到传递来的参数值为:3647829, 可以是数值, 也可以是指针地址, 就看你子函数定义成什么类型的参数
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、微信小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了立山免费建站欢迎大家使用!
intcmp是和GetKeyFunc_t对应起来的。
而你现在错在了CmpFunc_t这个函数参数上了。
你把怎样的函数参数指针传给了BST_t *newBST?
你没交代清楚啊,你把错误指针传给newBST函数的第一个参数,编译器肯定报错了。你给了那么多代码,关键你把什么传给了BST_t *newBST的第一个参数?给一下你调用这个newBST函数的代码,而且要你传给该函数第一个参数的参数定义。
另外给个建议:定义函数时,记得对传进来的参数进行合法性检验。多加几行代码是很有必要的,能增强函数的健壮性。(微软也好,ISO也好,都对大部分函数设计时要求做必要的合法检验)
简单写了一个,供参考
#include
stdio.h
#include
string.h
struct
data
{
int
n;
char
name[10];
};
//传入一个字符串指针name,给结构体相应变量赋值
void
cp_str(
char
*name
,
int
n
)
{
struct
data
st;
strcpy(
st.name
,
name
);
st.n=n;
}
//输入数据,完成字符串的录入
void
input_str()
{
int
i=0;
for(i=0;i10;i++)
{
scanf("%s"
,name
);
cp_str(
name
,
i
);
}
}
//主程序
int
main()
{
input_str();
return
0;
}
#include stdio.h
#include stdlib.h
#define LINE_MAX 80
struct body{
char data[100]; //要定义成数组才可以,不然,还要去分配内存
int num;
};
void create(struct body *bd); //结构体定义后,才能使用结构体类型,所以,移动到定义之后
int main(int argc, char *argv[]) {
int choose;
struct body *bd;
bd = (struct body*)malloc(sizeof(struct body));
while(1)
{
printf(" *******************欢迎来到文章编辑系统********************\n");
printf("1. 创建新文本\n");
printf("2. 统计文本\n");
printf("5. 退出系统\n");
printf("请选择你需要的功能的序号:");
scanf("%d",choose);
switch(choose)
{
case 1:
printf("创建新文本\n");
create(bd);
continue;
case 2:
printf("统计文本\n");
continue;
case 5:
printf("谢谢您的使用!\n");
break;
default:
printf("请正确输入!\n");
continue;
}
if(choose == 5)
break;
}
return 0;
}
void create(struct body *bd)
{
printf("编辑文本,Enter键保存\n");
scanf("%s",bd-data);//结构体指针引用成员用-, 同时,格式串应该是%s
printf("您输入的文本是:%s\n",bd-data); //同上
}
你的地址值传递错误,按照我给你修改的试试看,一定要注意你的实参传递的是地址还是具体的值,如果是地址,在子函数中就不要去修改你传递进来的地址。
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;
}
}