问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言,不是很理解typedef,,它是跟宏定义的意思差不多么?那个USER是结构体类型名儿么,

发布网友 发布时间:2023-05-18 08:25

我来回答

2个回答

热心网友 时间:2023-10-20 08:35

typedef是给一个类型新的短名字,和define的区别在于它不是纯文字替换,而且要求标识符名字不重复。应当注意typedef的意义更像是变量定义——但是理解为宏定义并不影响实际使用。宏定义是单纯的文字替换(当然是全字检索)。

给的图片中是省略了结构体类型名,USER是这个结构体类型的别名。实际的写法类似这样:

typedef struct User
{
  char name[20];
  char num[10];
} USER;

其中User是结构体类型名,但是实际的使用非常不便,每次需要使用这个结构体都要使用struct User,所以一般都定义一个别名,此处使用USER作为别名。例如定义usr1和usr2两个变量:

struct User usr1;
USER usr2;

可以看到第一种十分不便,所以大多数人都使用第二种。

此处,*sp指针指向的是sp[]数组的第一个元素sp[0]所在的地址,或者说是sp[]数组的地址。但是这不是必然的,而是由getdata(sp);这句话指定的。这句话告诉了getdata函数使用sp数组的地址作为唯一一个参数,类似于汇编中压栈再call getdata

而在getdata中将sp弹出栈,这两个sp的位置是不一样的(&main.sp!=&getdata.sp),但是因为sp的内容是一样的(main.sp==getdata.sp),所以*sp以及sp[]是恒相等的(*main.sp===*getdata.sp&&main.sp[]===getdata.sp[]),故而能够通过改变函数内的sp[]的值来改变主函数的sp[]的值。所以有人说C语言传递数组名字是引用传递。

热心网友 时间:2023-10-20 08:36

typedef跟宏(marco)不一样.
marco以define实作, 在编译期之前会先做文字替换, 所以其结果应该看成一种replace.
typedef则不是作为文字替代, 而是"使用者自订型别", 这个自订型别, 也拥有一般型别的编译检查及相关特性.

getdata(USER *sp) // 此处的sp是一个新的区域变数, 只是与main的sp变量同名, 但不是同一个.

getdata的(USER *)sp, 是一个名为sp的变量, 该型态是一个指针, 指向一个USER结构的位址(理应为一个实际USER变量). 所以, 透过指针, 写入的位置为实际USER变量内容, 因此返回後仍保持修改有效(上层采用名称指向变量, 下层使用指针指向实际变量, 上下指向同一个)

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
HPV16阳性就是宫颈癌吗 防静电工作台销售前景怎么样 在深圳,精益管工作台的价格一般是怎么样的? 防静电式PCB周转车有没有按需定做的生产厂? 深圳全百捷公司主要做什么的 深圳哪一个厂家的信誉比较好。 广东防静电工作台哪里的比较好 男人补精吃什么男人补精10大食物 什么是甲骨文认证教育 甲骨文证报考条件 在和平精英里面怎么改变性格 往事如烟 过眼云烟何必挂念 勿念什么意思? 过客何须牵挂的意思? 家庭生命周期的发展过程正确的顺序是( )。 祸从口出是指什么意思? 人生灾祸多有什么因果 多门之室生风,多言之人生祸什么意思 iphone14pro可以插两张移动卡吗? 进抵的词语进抵的词语是什么 之无[zhī wú]什么意思?近义词和反义词是什么?英文翻译是什么? 山水有灵性下一句 书林逸人壁表现了诗人怎样的感情 佳能彩色打印机加墨水家用彩色打印机选爱普生还是佳能 春季公历是哪几个月 梦见电路失火的预兆 华为什么时候从天府软件园搬去郫县的 华为的奋斗史有哪些? 如何在细分赛道中寻找品牌化的机会? 口臭嘴苦、舌苔白是胃火旺!这些食物除湿清胃热 凌迟   [líng chí]什么意思?近义词和反义词是什么?英文翻译是什么? C语言中UserParms.h是什么 中超弃权什么意思 寻各位高人关于足球比赛弃权规则 排球 弃权和阵容不完整的区别 wpf中什么控件有cornerradius属性 电瓶上YT12MF7一A是什么意思 富力2.2米生产线型号是多少 十年回首送归鸿的翻译十年回首送归鸿的翻译是什么 family 日文片假名 家まで来てください。 家ま的读音和意思? うち也有家的意思,日语汉字可以写成家吗? 尚美生活集团上市了吗 格林豪泰是尚美生活吗? 尚美生活卡是干嘛的 看淘宝和吧里总是有说蜘蛛3L的,5L的,什么意 深圳市尚美生活服务有限公司怎么样? 新基保从哪年开始的 火玫瑰蜘蛛长到5厘米需要多久? 智利火玫瑰4l-5l是多少厘米 “假有人焉,举我言以复于我,我必疑其诳.”这句怎么翻译 不属于基本医疗卫生制度基本内容的是