2 qq 22210253 qq_22210253 于 2016.01.28 23:16 提问

struct {}a,*p 的问题
 typedef struct BTNode {                //B-树的结构
    int keynum;                     //n
    struct BTnode *parent;          //指向双亲
    KeyType key[m + 1];             //K(i)
    struct BTNode *ptr[m + 1];      //A(i)
    //Record *recptr[m + 1];        //记录指针向量
}BTNode, *BTree;

BTree是指向结构的指针,BTNode * 也是,那我为什么不能把BTree型的值赋给BTNode * 型的呢?

图片说明

7个回答

github_27756899
github_27756899   2016.01.29 00:00
已采纳

struct BTnode *parent;改为struct BTNode *parent; 注意大小写。

qq_22210253
qq_22210253 谢谢大神!我看了一晚上没看出来
2 年多之前 回复
WinsenJiansbomber
WinsenJiansbomber   2016.01.29 09:10

一个是BTNode, 一个是* BTree,类型本就不同。还有定义结构体应该这样:
typedef struct { //B-树的结构
int keynum; //n
struct BTnode *parent; //指向双亲
KeyType key[m + 1]; //K(i)
struct BTNode *ptr[m + 1]; //A(i)
//Record *recptr[m + 1]; //记录指针向量
}BTNode, *BTree;

qq_22210253
qq_22210253 为什么?这样做有什么意义?
2 年多之前 回复
qq_22210253
qq_22210253   2016.01.28 23:17
 typedef struct BTNode { //B-树的结构
int keynum; //n
struct BTnode *parent; //指向双亲
KeyType key[m + 1]; //K(i)
struct BTNode *ptr[m + 1]; //A(i)
//Record *recptr[m + 1]; //记录指针向量
}BTNode, *BTree;
qq_22210253
qq_22210253   2016.01.28 23:17

typedef struct BTNode { //B-树的结构
int keynum; //n
struct BTnode *parent; //指向双亲
KeyType key[m + 1]; //K(i)
struct BTNode *ptr[m + 1]; //A(i)
//Record *recptr[m + 1]; //记录指针向量
}BTNode, *BTree;

WinsenJiansbomber
WinsenJiansbomber   2016.01.29 09:11

这样了:
```typedef struct { //B-树的结构
int keynum; //n
struct BTnode *parent; //指向双亲
KeyType key[m + 1]; //K(i)
struct BTNode *ptr[m + 1]; //A(i)
//Record *recptr[m + 1]; //记录指针向量
}BTNode, *BTree;


WinsenJiansbomber
WinsenJiansbomber   2016.01.29 09:12

这编辑器太糟糕了!

 typedef struct  {                //B-树的结构
    int keynum;                     //n
    struct BTnode *parent;          //指向双亲
    KeyType key[m + 1];             //K(i)
    struct BTNode *ptr[m + 1];      //A(i)
    //Record *recptr[m + 1];        //记录指针向量
}BTNode, *BTree; 
Hkmyht
Hkmyht   2016.02.26 13:52

问题原因:我也把楼主代码拷贝了。代码的确打错了!
图片说明

shtruct dfdf * p; 这应该也算一个新结构体吧。 反正可以编译通过!

BTree是指向结构的指针,BTNode * 也是,那我为什么不能把BTree型的值赋给BTNode * 型的呢?
这是可以转的。。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C/C++ 微软面试经典剖析
1  分析下面的程序 struct s1 { int i: 8; int j: 4; int a: 3; double b; }; struct s2 { int i: 8; int j: 4; double b; int a:3; }; printf("sizeof(s1)= %d\n", sizeof(s1)); printf("sizeof(s2)= %d\n", sizeof
C语言之struct A *b和struct A c区别
struct A *b; 是指针 struct A c; 是定义了一个struct A对象,你得提供相应的结构体的具体定义 结构体A没有具体的定义,当struct A c时,实际是定义一个结构体变量,这是要分配存储空间的,空间大小依结构体中具体的变量而定,如果没有具体的结构体定义,编译器不知道结构体到底是什么样的,就无法知道结构体到底占据所少存储空间,所以编译不能通过. struct A *
c 语言经典算法100例
#include <stdio.h> #include <malloc.h> #define NULL 0 #define LEN sizeof (struct student) struct student { int xh; float cj; struct student *next; }; void main() { void print(struct student *head); struct student a,b,c,*head,*p; a.xh=1101; a.cj=95; b.xh=1102; b.cj=82; c.xh=1103; c.cj=86; head=&a;a.next=&b;b.next=&c;c.next=NULL; print(head); } void print(struct student *head) { struct student *p; p=head; while (p!=NULL) { printf("%d %6.2f\n",p->xh,p->cj); p=p->next; } }
C语言难点专题——const
1. const对值类型的数据修饰: 如基本类型(int, double, char), struct, array  值类型的数据,const放置在前面和后面都一样。 对于struct和 Array类型的数据, 跟java的类对象不同,由于java都是对象的引用,所以只要求引用不乱指就行, 而c中,直接要求这个对象的内部成员都不可改变,即struct的任何成员,不可改变,array的任意一项不可
链表的排序
# include<stdio.h> #include <stdlib.h> struct sort1 { int a; struct sort1 *next; }; struct sort1 *creatsort1(struct sort1 *d,int n); void printsort1(struct sort1 *l); struct sort1* creatsort1(struct sort1 *d,int n) { struct sort1 *p,*h; int i,x; d=(struct sort1*) malloc (sizeof(struct sort1)); p=d; for(i=1;i<=n;i++) { h=(struct sort1*) malloc (sizeof(struct sort1)); scanf("%d",&x); h->a=x; p->next=h; p=p->next; } return d; } void printsort1(struct sort1 *l) { struct sort1 *p; p=l->next; printf("%s\n","the data:"); while(p!=NULL) { printf("%d ",p->a); p=p->next; } printf("\n" ); } struct sort1 *sort(struct sort1 *head) { struct sort1 *min; struct sort1 *p_min; struct sort1 *p; struct sort1 *first; struct sort1 *end; first=NULL; while(head!=NULL) { for(p=head,min=head;p->next!=NULL;p=p->next) { if(p->next->a<min->a) { p_min=p; min=p->next; } } if(first==NULL) { first=min; end=min; } else { end->next=min; end=min; } if(min==head) { head=head->next; } else { p_min->next=min->next; } } if (first != NULL&&end;==NULL) { head = first; printsort1(head); } } void main(){ struct sort1 *la; int n; printf("输入准备排序数字的个数,例如5!\n"); scanf("%d",&n); printf("输入 %d 个数字!\n",n); la=creatsort1(la,n); sort1(la); }
用struct LNode *L与LinkList &L的区别
用void InitList(struct LNode *L), 函数InitList中如果改变了L指针本身的值,对其他函数无影响。用void InitList(LinkList &L),函数InitList中如果改变了L指针本身的值,也影响调用他的函数。这就是引用方式的调用特点。#include#include#includetypedef struct lnode{ int  data; st
计算机等级考试二级C语言超级经典400道题目(8)
351、设ch是char型变量,其值为A,且有下面的表达式: ch=(ch>=A&&ch<=Z)?(ch+32):ch 的值是____ A) A B) a C) Z D) z、B、3  352、设有如下定义: struct sk {int a;float b;}data,*p; 若有p=&data;,则对data中的a域的正确引用是 A)(*p)、data、a B)(*p)、a C)p
修道士与野人问题
1、问题描述:这是一个古典问题.假设有n个道士和n个野人准备渡河.但只有一条能容纳c人的小船,为了防止野人侵犯修道士,要求无论在何处,修道士的个数不得少于野人的个数(除非修道士个数为0).如果两种人都回会划船,设计一个算法,确定他们能否过河.若能,则给出小船来回次数最少的最佳方案. 2、设计2.1 设计思想(1)存储结构typedef struct {    int xds; 
lwip【1】LwIP移植心得
LwIP终于能跑了,总结下: 平台是LPC2136+ENC28J60,32K的RAM,软件是uCOS-II 2.51+LwIP 1.1.1。 感觉主要解决两个问题: 操作系统仿真层的移植。这个基于uCOS-II的代码太多了。COPY下就行! 1,设备驱动的移植. 驱动的移植主要就是完成ethernetif.c的工作。作者已经给好了驱动的接口。 struct netif {   str
matlab 中的 struct
[转载]matlab 结构(struct)数组要在MALTAB中实现比较复杂的编程,就不能不用struct类型。而且在MATLAB中实现struct比C中更为方便。<br /><br />4. 3.1 结构数组的创建<br />MATLAB提供了两种定义结构的方式:直接应用和使用struct函数。<br />1. 使用直接引用方式定义结构<br />与建立数值型数组一样,建立新struct对象不需要事先申明,可以直接引用,而且可以动态扩充。比如建立一个复数变量x:<br />x.real = 0; % 创建