当前位置:首页 > 游戏信息 > 正文

C语言结构体Struct怎么使用?,抄袭查找结构体+指针+函数

  • admin
  • 游戏信息
  • 发布时间:2024-09-19 10:14:11 {/php}

本文目录一览

keil 中结构体和指针的问题……

void LatticeInit(Lattice* Lat, int xx = 0, int yy = 0, int wall = 0, int stepNum = 0)
在这一行上结构体名前加上struct,
改为void LatticeInit(struct Lattice* Lat, int xx , int yy , int wall , int stepNum )
就可以了,因为在C中(C++可以),必须用struct +自定义标识符表示结构体,或者typedef 一下也行。 C也不支持默认形参。

C语言中如何以结构体变量的地址作为函数形参,以便将指向结构体变量的指针传递给它?

C语言结构体Struct怎么使用?,抄袭查找结构体+指针+函数-第1张-游戏信息-龙启网

C语言中,所有的变量都存储在内存中,可以通过运算符获得变量的内存地址,函数调用时,只需要把普通变量前加上符号,就可以达到传递变量地址的目的。

例如:

定义一个结构体类型

struct?Yearmonthday
{?
????int?year,?month,?day;
};

定义相关函数,参数类型指定为结构体类型指针

void?input(struct?Yearmonthday?*p1)?//函数形参p1是结构体指针类型
{
????printf("请输入年,月,日:");
????scanf("%d,%d,%d",p1-year,p1-month,p1-day);
}

在主函数中定义一个结构体变量,调用相关函数,传递变量地址

int?main()
{?
????struct?Yearmonthday?ymd;
????input(ymd);?//传递变量地址,以便带回数据
????printf("date=%d/%d/%d\n",?ymd.year,?ymd.month,?ymd.day?);?//输出结果
????return?0;
}

c++用函数将字符指针中的一个字符指针进行查找,查到有另一个字符指针的内容,就替换成第二个字符指针

#includecstdio
#includecstring
#includecstdlib
char* ReplaceString(char *str,char *s1,char *s2)
{
int l,len=0,len1=strlen(s1),len2=strlen(s2);
char *p1,*p2,*buf=(char*)malloc(strlen(str)+1);

if(0==len1)
return NULL;
strcpy(buf,str);
p1=p2=buf;
while(*p1(p2=strstr(p1,s1)))
{
l=p2-p1;
strncpy(str+len,p1,l);
len+=l;
strncpy(str+len,s2,len2);
len+=len2;
p2+=len1;
p1=p2;
}
str[len]=0;
strcat(str,p1);
free(buf);
return len ? str : NULL;
}
int main()
{
char str[256],s1[64],s2[64];

// while(1)
// {
printf("请输入str:");
gets(str);
printf("请输入s1:");
gets(s1);
printf("请输入s2:");
gets(s2);
ReplaceString(str,s1,s2);
printf("用%s替换%s后的str:",s2,s1);
puts(str);
// }
return 0;
}

C语言结构体Struct怎么使用?

在Turbo C中,结构也是一种数据类型, 可以使用结构变量,因此,像其它类型的变量一样,在使用结构变量时要先对其定义。

如果需要定义多个具有相同形式的结构变量时用这种方法比较方便,它先作结构说明,再用结构名来定义变量。

扩展资料

指向结构体的指针是一个一直都没有掌握好的点,希望这里能记录好一点,加强理解。?
对于指针有几个好处,

第一:就像指向数组的指针比数组本身更容易操作一样,指向结构的指针通常也更容易操作;?

第二:在早期的C中参数传递只能使用结构的指针;

第三:很多奇妙的数据表示都是用了包含指向其他结构的指针的结构。?
和数组不同,结构的名字不是该结构的地址(即单独的结构名并不是该结构地址的同义词),必须使用 运算符。

参考资料c语言结构体struct相关使用说明

在函数中为啥使用结构体指针数组,为其赋值赋不上,(申请了空间),在main函数中可以赋值

你的这个代码,一些标点可能你复制错了,我改了下,creatUDN(s);我注释掉了,另外在MiniSpanTree_PRIM函数里的两个malloc参数我给去掉了星号,ubuntu10.04+gcc4.4没有报错,但不知你的main怎么写的,我没运行。
大致解释下吧,不知你的malloc是有其他用意还是马虎错了,malloc参数为所需在堆(也就是汇编的数据段)开辟的空间的字节数,例如我要开辟一个int型,那么默认的gcc int为4字节,malloc就开出4字节,(两种写法在gcc上等效malloc(4)或者malloc(sizeof(int)))。它的输出为开辟的空间的首地址,例如int开完后malloc只给出一个void*类型,为单字节指针,指向int在数据段的首地址,因为默认输出为单字节指针,也可理解为char*,因为两个指针在gcc下的默认字节数相同,所以为了后面的方便操作我们才对他进行指针类型转换,可你源程序的三个malloc里开出的不是某个struct所占的字节数的存储空间,而是struct*所占字节数的存储空间,即指针存储空间,gcc默认为8字节,然后你却把它变成相应struct来引用,可能会引用到未开辟区域,编译不会出错,但运行就不好说了,你仔细查查还有没有这种错误了

C语言在一个函数里面定义了一个结构体,怎么在另外一个函数里面使用?

在另外一个函数里面使用的源代码如下:

#include"stdio.h"

#include "conio.h" //-------添加这个头文件,因为getch()函数来自它,否则编译会有警告

struct student ? /*定义结构体*/

{

void main()

{

void data_in(struct student putin[]);

void data_out(struct student *p);

void data_pout(struct student *s1);

data_in(pers); ? ? ?/*调用指针输入函数*/

data_out(sp); ? ? /*调用指针输出函数*/

data_pout(sp); ? /*调用函数名输出函数*/

getch();??

?}

扩展资料

1、函数是C语言的基本组成元素,当我们调用一个函数时,需要明确函数名和实参列表。实参列表中的参数可以是常量、变量、表达式或者空,并且各参数之间要使用英文逗号分隔开来。

2、在C语言中,函数的定义是独立的,一个函数不能定义在另一个函数内部。但在调用函数时,可以在一个函数中调用另一个函数,这就是函数的嵌套调用。接下来我们通过一个案例来演示函数的嵌套调用。