前言:好吧,字符串这章这些函数估计后面又要重新熟悉,毕竟函数有点多。
返回主页:https://www.cnblogs.com/accolade/p/12289618.html
枚举,结构,联合
枚举使用是必需带上enum 枚举类型的名字 名字,怎么感觉有点烦呢。
随便写的代码
#include<stdio.h> #include<stdbool.h> #include<string.h> enum color{red,green,yellow,white,colornum}; int iamyoudada(enum color c); int main(int argc,const char *argv[]){ char *colorchar[]={"red","green","yellow","white"}; for(int i=0;i <= colornum;i++){ printf("%d:red=%d\n",i,red); } int Nm; enum color b = 3; Nm=iamyoudada(b); printf("the result of returnning form funtion iamyoudada:%d\n",Nm); printf("%d\n",red); } int iamyoudada(enum color c){ printf("here is the funtion:iamyoudada and the input info is %d\n",c); return 1; }
注意:
enum color{red,green,yellow,white,colornum}; int iamyoudada(enum color c);
申明函数是,这个枚举必需也要写在外面,好奇怪。不然就会有报错。改了1个小时。
看下老师的代码:
上面的代码只能这么写,我是过直接去改原始enum就会报错。
由于枚举就是const int,所以函数直接可以穿参数进去。看下面的代码
#include<stdio.h> #include<stdbool.h> #include<string.h> int f(int a); int main(int argc,const char *argv[]){ enum color { red, green, white}; f(red); } int f(int a){ printf("i am the funtion :f\na=%d\n",a); }
i am the funtion :f a=0
有时间自己写一下。
是不是很像python里面的面向对象,但是没有可以调用的函数。所有还是遗憾的。
有趣的现象,如果int没有声明的话,便会变成了默认为0,请看下面的代码:
但是如果是赋值的话,全部都赋值过来了
输出:
注意,函数如果传的如果是值,那么修改不会修改到外面结构的属性,如下:
当然,这种方法如果结构太大的话,就不可取了。所以我们推荐下面的一种方案。指针传参,先看下下面这句话,翻译一下
。
原文:https://www.cnblogs.com/accolade/p/12827439.html