1. c语言结构体类似函数吗
一、你所发来的图中,struct vote *create()这一句确实是一个函数!
二、它不是结构体,结构体定义语句没有括号,如:
struct vote
{
int a;
char name[20];
float score[3];
};
三、struct vote *create() 这条语句解释,
刚说它是一个函数,其中:
函数名:create
函数的参数:无
函数的返回值类型:是struct vote * 型,即返回值是指向结构体vote类型的指针。
四、最后回到你的疑问:
1、C语言结构体类似函数吗? 不是。
2、如图,struct vote *create(); 这语句算是调用函数吗?不是调用函数,而是定义函数。
3、如果算的话括号内不用形参之类的吗?既然是定义函数,括号内可以用形参,当然也可以选择不用形参。你发的例子就是不用参数的函数。
还有不明白之处,请留言。
2. c语言里面的结构体是什么意思
结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构。
在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。
结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。
(2)c语言有结构体函数扩展阅读
将一个结构体变量中的数据传递给另一个函数,有下列3种方法:
(1) 用结构体变量名作参数。一般较少用这种方法。
(2) 用指向结构体变量的指针作实参,将结构体变量的地址传给形参。
(3) 用结构体变量的引用变量作函数参数。
在软件开发过程中,常常需要动态地分配和撤销内存空间,例如对动态链表中结点的插入与删除。C语言中是利用库函数malloc和free来分配和撤销内存空间的。
3. C语言结构体函数
STUf(STUa)
{STUb={"Zhao",'m',85,90};
inti;
strcpy(a.name,b.name);
a.sex=b.sex;
for(i=0;i<2;i++)a.score[i]=b.score[i];
以上是将b中的数据赋值给a,相当于a=b;这样的一个操作
returna;
}
main()
{STUc={"Qian",'f',95,92},d;
d=f(c);//这里传的c是个复制品(传递的不是结构体指针),所以c不会变,d接收f()函数的返回值,因为返回值的内容是f()中的b的值,所以,d与c不同
printf("%s,%c,%d,%d,",d.name,d.sex,d.score[0],d.score[1]);
printf("%s,%c,%d,%d ",c.name,c.sex,c.score[0],c.score[1]);
}
输出结果为:A)Zhao,m,85,90,Qian,f,95,92
4. C语言有关函数结构体的
//代码已经按照你的要求程序编译好了。可以到网盘下载:各段代码如下:ex701.cpp代码:////编写一个求字符串长度的函数stringlen、字符串大小写转换函数stringupr、stringlwr及字符串比较函数stringcmp,//并在main函数中调用并输出结果。编写的包含main函数的源程序以ex701.cpp命名,stringlen函数在ex701-1.cpp中实现,//stringupr函数在ex701-2.cpp中实现,stringlwr搜索函数在ex701-3.cpp中实现,stringcmp函数在ex701-4.cpp中实现////////////////////////////////////////////////////////////////////////////
5. c语言中,如何在结构体中实现函数的功能
c语言的结构体是一组数据的组合,并不是简单的单一类型。所以在查找和输出的时候,均不能直接操作,而是要进行变通。
1
查找。
对于以某一项为关键字进行查找时,比如在结构体中有int型的成员a,要查找a为100的结构体变量,这时需要遍历每个结构体(数组、链表、或者其它任意形式),对每个元素的成员a值进行比较,符合的则表示查找成功。
对于结构体中元素较多,同时要对整个结构体每个元素都匹配才算查找到的特殊情况,可以使用memcmp的方式,整体进行比较,以减少代码量。不过这种情况较为少见,不过多描述。
2
输出。
对于结构体的输出,其实就是对其每一项,或者若干项成员变量的输出。
所以可以使用基本的输出函数,对每一项单独输出,输出中为了方便阅读,可以加一些说明文字。
如果对结构体输出有多处调用的需求,可以在将该功能封装为函数,供各个需要的函数调用。这样的好处是,当结构体的成员出现变化,或者结构体输出要求更改时,修改一处代码即可完成所有的输出修改,实现易于维护的效果。
6. 关于C语言的结构体函数
如果在结构体定义时,或定义后取了别名,可以用别名,否则不能省“struct”
如:typedef
struct
Teacher
TEACHER;
则可以用TEACHER
代替struct
Teacher
C语言的结构体没有存取控制权限,相当于C++存取控制权限中的public:
追问:
那struct
Teacher
*creat(struct
Teacher
*head);
和Teacher
*creat(struct
Teacher
*head);
一样吗?如果不一样的话有什么区别呢?
追答:
是一样的,struct
Teacher
和Teacher只是同一东西的两种不同写法。
7. 关于C语言结构体函数的运用
定义的函数必须有一个结构体的指针参数,将结构体数组首地址传递进去,返回值也应该是一个指针。你的那个操作结构体的函数应该改写,例如这样:
struct student* inputstu_bylist(struct student* stuin)
{
for(int i=0;i<70;i++)
{
fflush(stdin);
printf("请输入学生的姓名");
gets(stuin[i]->name);
………
………
}
return stuin;
}
8. C语言——结构体/函数
#include<stdio.h>
#include<string.h>
#defineN(5)
structSTUDENT
{
charname[20];
intage;
floatchinese,math;
};
voidscan(structSTUDENT*a,intn);
voidprint(structSTUDENT*a,intn);
voidsort(void*a,intn,intsize,int(*cmp)(void*,void*));
intcmp_score(void*a,void*b);
intcmp_chinese(void*a,void*b);
intcmp_name(void*a,void*b);
intmain()
{
structSTUDENTa[N];
inti;
scan(a,N);
sort(a,N,sizeof(*a),cmp_score);
print(a,N);
sort(a,N,sizeof(*a),cmp_chinese);
print(a,N);
sort(a,N,sizeof(*a),cmp_name);
print(a,N);
return0;
}
voidscan(structSTUDENT*a,intn)
{
inti;
for(i=0;i<n;++i)
{
scanf(" %s%d%f%f",a[i].name,&a[i].age,&a[i].chinese,&a[i].math);
}
}
voidprint(structSTUDENT*a,intn)
{
inti;
for(i=0;i<n;++i)
{
printf("%s%d%f%f ",a[i].name,a[i].age,a[i].chinese,a[i].math);
}
}
voidsort(void*a,intn,intsize,int(*cmp)(void*,void*))
{
inti,j;
void*t=malloc(size);
for(i=0;i<n-1;++i)
{
for(j=0;j<n-i-1;++j)
{
if(cmp(a+size*j,a+size*(j+1)))
{
memcpy(t,a+size*j,size);
memcpy(a+size*j,a+size*(j+1),size);
memcpy(a+size*(j+1),t,size);
}
}
}
free(t);
}
intcmp_score(void*a,void*b)
{
return((structSTUDENT*)a)->chinese+((structSTUDENT*)a)->math<((structSTUDENT*)b)->chinese+((structSTUDENT*)b)->math;
}
intcmp_chinese(void*a,void*b)
{
return((structSTUDENT*)a)->chinese<((structSTUDENT*)b)->chinese;
}
intcmp_name(void*a,void*b)
{
returnstrcmp(((structSTUDENT*)a)->name,((structSTUDENT*)b)->name)>0;
}
9. C语言下写有关结构体的函数
首先你要明确第4个的st并不是指针,并且结构体并不能直接给一个结构体,他不是基本类型。
第2个,的结构体是在堆里边的,需要,释放。
第3个是在栈中的变量。
要做链表的话一定要用2;一般的使用3即可。
第一个明显不合理,第一行分配的空间有什么用呢?
10. 在c语言中 函数和结构体的区别
一个程序通常围绕这两个方面进行:数据存储和数据操作;
结构体是一种数据类型,用来将不同类型的数据组合在一起,决定数据的存储问题(比如在内存占多大的空间来,系统怎么解释存储数据的位数据啦等等)同int, double 等编译器内置的数据类型基本相同,只不过结构体是用户自己定义的数据类型而已,例如:
struct student
{
char name[20];
int NO;
};
函数是对数据的一种操作;