golang函数返回值是结构体值的时候,为何不能对成员赋值呢?(定义结构体变量赋值)

9335℃ 蒋志刚

结构体函数,为什么不能这样赋值?

strcpy(p1->firstn,cont[j+1]);中如果cont[j+1]是个字符串,p1是指向struct pass结构体变量的指针,那就没有错!但你这里连p1都没有声明是什么,后面又为p1开辟了struct ...

(定义结构体变量赋值)golang函数返回值是结构体值的时候,为何不能对成员赋值呢?

为什么结构体的成员不能在声明的时候赋初值

在c语言的语法中,这样不行如果你需要初始化可以这样写struct stu{ int a; int b; int c; } student = {1,2,3};

结构体中给成员赋值赋不进去

不是没有赋值进去.你肯定是这么调用的:complex * p;creat(p);//然后打印这样调用相当于值传递.并不能改变p的值.你可以传指针的引用或者二级指针!或者:p = creat(p);这样就好了!

golang怎么返回结构体

用golang解析二进e69da5e887aae799bee5baa631333365653331制协议时,其实没必要管结构体的字段的对齐规则,何况语言规范也没有规定如何对齐,也就是没有规...

结构体变量初始化为什么不能用字符串直接赋值给相关的成员

使用strcopy()给字符串成员变量赋初值,原因是:字符串在C语言中当做一个地址,例如:char *str = "Hello World!",变量肯定不能赋值地址值,类型不匹配.

为什么定义定义结构体变量后不能对变量整体赋值

结构体变量是可以直接赋值的; 定义结构体类型,然后用这个类型定义出来的变量就是结构体变量; C语言在相同类型的变量间赋值时是直接内存复制的,即将他们的内存进行复制,这里因为同样结构体变量,属于同一种变量,所以赋值时是按照他们的内存分布来直接拷贝的.

初始化时只能对整个结构体变量进行,不能对结构体类型中的合成员进行初始化赋值,, 不允许对结构体变量

初始化,是一个空箱子,把值装进去.赋值,是把原来的拿走,再把值装进去.至于你提到的,没这个说法.初始化的时候,可以部分赋值,不过没被赋值的变量,默认为0.比如struct t{ int a,b,c;};struct t var={1,2};这里a和b就是1和2. c没有赋值,默认为0.而赋值,同样也是可以整体的,比如var = (struct t){3,4,5};这个就可以把abc赋值成345.经过几次发展后,现在C也算比较灵活了,很多说法已经过时了.

C语言问题:为啥结构体成员赋值不能在主函数之前?而整形变量就可以呢?

你可以给结构体初始化,在结构体完成时直接写结构体变量并初始化就可以啊,而且,你上面的整型变量那么写也不行,要么就直接定义全局变量,要么就预定义,但是像你那样再赋值是不行的..全局变量 int N=10; 预定义:define N 10 区别是,全局变量在函数中是可变更的,而预定义中的变量是静态的,不能变更.

函数中返回值是结构体的和函数中返回值是基本数据类型的区别

你说的这种情况,函数返回的是整个结构体,无论这个结构体中包含了多少个成员,一个结构体就只是一个变量(结构体本身就是一个变量,无论它包含了多少个成员).这样,函数返回一个结构体就意味着函数把结构体中所有的成员都返回了.c语言函数的确只能有一个返回值,用返回结构体的方式就很好地解决了需要返回多个返回值的问题.return后面没有0或1,说明这个函数是void类型的,这类函数本来就不需要有返回值,这里的return的意思并不是要返回某个值,而是退出这个函数的意思.

为何不能给这个float型的结构体成员输入数据?

楼主的意思应该是说在定义结构体的时候为什么不能赋初值... ... 结构体的定义只是说明数据类型的,所以不会在编译时候分配内存,因此是不能赋值的. 必须声明结构体变量以后,才能对变量赋初值(变量是分配内存的).比如 struct add{float x=10;}; 是错误的,因为不能给类型定义赋初值: 应该是 struct add{float x;};add easy;easy.x=10;