C 结构体操作
来源:互联网 发布:武汉百胜睿迪软件测试 编辑:程序博客网 时间:2024/06/10 19:55
学完oc再学c
#include <stdio.h>#include <stdlib.h>#include <string.h>struct User { int id; char name[16]; struct User* next;};struct User user_header = {0};void addToHeader(struct User* user) { user->next = user_header.next; user_header.next = user;}/* 这种写法是错误的,最终user_header中只会有2个元素:当前元素,和next元素,因为直接操作了user_header的值,正确做法应该是操作地址void addToFooter(struct User* user) { while(1) { printf("add to footer --- id:%d, name:%s, next:%p\n", user->id, user->name, user->next); if(user_header.next == NULL) { user_header.next = user; user->next = NULL; break; } user_header = *user_header.next; }}*/void addToFooter(struct User* user) { struct User* header = &user_header; while(1) { if(header->next == NULL) { header->next = user; user->next = NULL; break; } header = header->next; }}void insert(struct User* user) { struct User *current = &user_header; struct User *previous; while(1) { if(user->id < current->id) { user->next = current; previous->next = user; break; } previous = current; // 这两步千万别颠倒,要不就死循环了 current = current->next; }}void show(struct User* user) { while(user) { printf("id:%d, name:%s, next:%p\n", user->id, user->name, user->next); user = user->next; }}int main(int argc, char const *argv[]) { //struct User u1 = {1, "simon", NULL}; //struct User u2 = {2, "teieka", NULL}; //addToFooter(&u1); //addToFooter(&u2); struct User* u1 = (struct User*)malloc(sizeof(struct User)); u1->id = 1; strcpy(u1->name, "hello"); struct User* u2 = (struct User*)malloc(sizeof(struct User)); u2->id = 2; strcpy(u2->name, "world"); struct User* u5 = (struct User*)malloc(sizeof(struct User)); u5->id = 5; strcpy(u5->name, "!!!"); struct User* u6 = (struct User*)malloc(sizeof(struct User)); u6->id = 6; strcpy(u6->name, "..."); addToFooter(u1); addToFooter(u2); addToFooter(u5); addToFooter(u6); struct User* u4 = (struct User*)malloc(sizeof(struct User)); u4->id = 4; strcpy(u4->name, "***"); insert(u4); show(&user_header); return 0;}
0 0
- C 结构体操作
- c语言结构体操作
- 结构体操作
- List 结构体操作
- socket编程:sockaddr_in结构体操作
- 结构体操作的坏味道
- 用指针对结构体操作
- YOLO image结构体操作学习
- 关于结构体操作的问题解析
- socket编程——sockaddr_in结构体操作
- socket编程——sockaddr_in结构体操作
- socket编程——sockaddr_in结构体操作
- socket编程——sockaddr_in结构体操作
- [gcc编程] socket编程——sockaddr_in结构体操作
- socket编程——sockaddr_in结构体操作
- socket编程——sockaddr_in结构体操作
- socket编程——sockaddr_in结构体操作
- [gcc编程] socket编程——sockaddr_in结构体操作
- 手游pvp系统网络设计
- bootstrap 嵌套模态框 二级模态框关闭导致一级模态框滚动条消失
- Spring在非web应用中优雅地关闭Spring IoC容器
- java反射机制及在Abdroid的应用
- React native开发中常见的错误
- C 结构体操作
- NOJ 1798 并查集水题
- django processors用法
- Oracle建立表空间和用户
- django 开发内容管理系统(已纠正)
- iOS开发中NSUnknownKeyException崩溃问题的解决办法
- C#操作SQL Server数据库 Asp.net
- spring学习日志之二Bean的配置的细节和解析
- Qt运行debug版本错误:无法定位程序输入点于动态链接库