2022-04-12 12:39来源:m.sf1369.com作者:宇宇
谭老的书怎么说呢 平常看看就行了 别真当真了 很多细节方面语嫣不详 而且其代码格式相当不规范 对初学者的代码习惯养成起不到一个帮助的功效(很多公司对这方面是有要求的 想想面试的时候一手清晰的代码 和一团乌漆麻黑的代码 之间的差别) 总结而言 入门学习一些基础语句可以 稍微深入切勿用此书 推荐采用 C Primer Plus 第6版(最新的一版)这本书十分详细 如果是以C当吃饭的工具 就用我所说的书 如果是C二级 那么谭老的书看看 在买点C真题做做 过二级不难
谭老的书不敢恭维,推荐 C primer
一般的结构体定义:struct tax_st{ long left; long right; int tax; long deduct;};然后声明一个结构体,语句为:struct tax_st mystruct;还可以将typedef关键字用在结构体的定义中,如你给的这个例子typedef struct tax_st{ long left; long right; int tax; long deduct;}TAX_LIST;typedef的意思是给某种类型定义个别名,如上的定义意思为,给struct tax_st定义一个别名为TAX_LIST,意思是在程序中TAX_LIST和struct tax_st是一回事,这样定义是程序员为了定义一个自己能快捷识别的类型。acceptdata(TAX_LIST tax_list[])的括号中是一个形参列表,表明该函数该传入的参数类型为TAX_LIST 类型的数组,这里也可以这样写acceptdata(struct tax_st tax_list[]),是一回事。struct tax_st tax_list[]这个声明我想你应该一眼就看出是什么意思了吧,就是一个结构体数组。你的理解是误在typedef上,TAX_LIST不是变量,而是一个别名。如果要定义变量是这样的:struct tax_st{ long left; long right; int tax; long deduct;}TAX_LIST;即不要typedef,这时的TAX_LIST就是变量了。
TAX_LIST 是数据类型的名称,也就是你定义的结构体(定义一个结构体就相当于自定义的一个新的数据类型,TAX_LIST相当于给你的结构体的数据类型起的别名),tax_list[]是虚参,是此数据类型的数组指针(虚参起什么名都行,不需要申明的,在调用时,传入实参,就会产生一个实参的拷贝,此拷贝的名为虚参的名字(当参数为指针时,必须注意在函数体里操作的是指针本身,还是指针指向的地址内容))。函数的定义格式“函数名(数据类型 变量名[ , 数据类型 变量名])”([]中是可重复的)。要是变成你说的acceptdata(TAX_LIST , tax_list[] ) 就是 “函数名(数据类型 , 变量名)”的格式了,语法错误。