问题不是出在struct的定义上,c中楼主对struct的定义用法是正确的一种形式,问题是出在你对struct变量的引用上不能只是用rdsa,而是必须用struct rdsa,这是c语言对结构体变量的声明的链掘规定,这也是c与c++在结构变量的声明上的区别,建议楼主对c与c++在教材中分别加以考证~代码需改动为:
void printdata(struct rsda pp)//改动过!
{
struct rsda *p;//改动过!
p=&pp;
printf(format,data);
}
嗯,但是使用typedef时就帆唤悉是定义新的变量类型了,这样就不是在结构体上的问题,这样的话c与c++在态乎其上没有差异。
楼上说的不全对。
C语言里边,使用struct来定义结构体,要有struct这个关键厅配中字编译器才认得是个结构体。
所以代码修改如下就能扮山运行了。卖岩
#include "stdio.h"
#include "string.h"
#define format "|%-10s |%8d| \n"
#define data p->name,p->jbgz
struct rsda
{
char name[10];
int jbgz;
}tp[]={"liming",2500,"wanggang",3000,"zhanghan",2800,"liuyang",3200,"dufeng",4300};
void printdata(struct rsda pp)
{
struct rsda *p;
p=&pp;
printf(format,data);
}
void main()
{
printdata(tp[0]);
}
----------------------------
typedef struct rsda
{
char name[10];
int jbgz;
}rsda;
是重新定义了一个新的类型叫rsda,所以下面也就不会报错了。
把struct rsda
{
char name[10];
int jbgz;
}tp[]={"liming",2500,"wanggang",3000,"zhanghan",2800,"liuyang",3200,"dufeng",4300};
改数册乎成
typedef struct rsda
{
char name[10];
int jbgz;
}rsda;
rsda tp[]={"liming",2500,"wanggang",3000,"zhanghan",2800,"liuyang",3200,"dufeng",4300};
C编译器对结构体的格式要求可能比C++编译器要求严格点姿让。薯悉
如LS所说!!