结构体变量在全局定义

//在c语言中,全局定义一个结构体变量报如下错误,但是在c++中不会报错,
//求解怎么解决??

E0059 常量表达式中不允许函数调用

图片说明

其他头文件已包含在myList.h中

1个回答

struct node* list;
在main函数里
list = createList();

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C++全局结构体变量赋值,读取时不一致
最近遇到一个问题,在对全局的结构体变量进行赋值之后,再读取其中内容的时候发现在Debug下是正常的,在Release下不正常。 下面这个代码是可以重现这个问题的:一个全局的结构体变量,在主函数中对它进行赋值,然后打印出来结构,发现和赋值不一致,并且在Debug和Release下的结果不一致。 代码: // Struct.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> using namespace std; struct MyStruct { int a; int b; int c; char* ca; char* cb; char* cc; }st; int main(int argc, _TCHAR* argv[]) { //MyStruct st; st.a = 1; st.b = 2; st.c = 3; st.ca = "ca"; st.cb = "cb"; st.cc = "cc"; printf("a: %d; b: %d; c %d: ; ca : %c; cb : %c; cc : %c;", st.a, st.b, st.c, st.ca, st.cb, st.cc); getchar(); return 0; } Debug下结果: ![图片说明](https://img-ask.csdn.net/upload/201611/08/1478614000_578050.png) Release: ![图片说明](https://img-ask.csdn.net/upload/201611/08/1478614024_347392.png)
关于全局变量的初始化问题
#include<stdio.h> #include<process.h> #include<string.h> //全局变量:用于保存通讯录 struct com{ char name[20]; char tel[15]; }temp; void main() { FILE *fp; //定义一个指向文件的指针 char filename[20]; //用于保存文件路径 int choice, flag=1; printf("请输入文件路径:\n"); scanf("%s", filename); fp = fopen(filename,"wb"); if(!fp) { printf("错误!文件打不开!\n"); printf("按任意键退出"); getchar(); exit(0); } while(flag) { printf("请选择:按1添加/按0退出\n"); scanf("%d", &choice); switch(choice) { case 0: flag = 0; break; case 1: printf("输入姓名:\n"); scanf("%s", temp.name); printf("输入电话:\n"); scanf("%s", temp.tel); fwrite(&temp, sizeof(struct com), 1, fp); default: break; } } fclose(fp); system("pause"); } 如果在定义结构体类型的时候直接用全局变量temp,字符数组可以自动初始化,其元素都为'\0',但是如果是在main函数里定义该结构体变量,则不会初始化,写进文件的结果会由于数组的未初始化而出现乱码。请问这如何解释?定义全局变量跟局部变量时初始化应该注意哪些问题?
c语言关于结构体类型的函数的返回值return
定义了一个全局变量的结构体,然后又定义了一个结构体类型的函数,函数的返回值如何返回一个空值,显然return 0;是不行的
C语言小白实现记录学校人员信息:代码如下,为什么在scanf输入第一个人员数据后按回车不能输入下一个人员数据而是程序结束?
``` #include<stdio.h> /*实现记录学校人员信息,包括学生和老师,其中信息包含身份、姓名、性别、职务/班级*/ #include<stdlib.h> struct Position /*结构体变量定义班级或职务*/ { int iClass; char cStaff[]; }; union Membership /*共用体变量定义成员信息*/ { char cStatus[]; char cName[]; int iNumber; char cSex[]; int iGo; /*作为判断是否继续的依据*/ struct Position Text; /*共用体中引用结构体*/ union Membership* pNext; /*指向下一个结点指针*/ }; int iCount; /*定义全局链表长度*/ union Membership* Create() { union Membership *pHead=NULL; /*头指针初始化为空*/ union Membership *pNew, *pEnd; iCount=0; /*链表长度初始化为0*/ pNew=pEnd=(union Membership*)malloc(sizeof(union Membership)); /*创建动态链表*/ printf("请输入学校人员信息:\n"); /*提示信息*/ printf("身份 姓名 编号 性别 职务 班级 是否继续\n"); scanf("%s",&pNew->cStatus); /*输入信息*/ scanf("%s",&pNew->cName); scanf("%d",&pNew->iNumber); scanf("%s",&pNew->cSex); scanf("%d",&pNew->Text.iClass); scanf("%s",&pNew->Text.cStaff); scanf("%d",&pNew->iGo); while(&pNew->iGo!=0); /*判断语句是否进行*/ { iCount++; if(iCount==1) { pNew->pNext=pHead; /*使指向为空*/ pEnd=pNew; /*跟踪新加入的结点*/ pHead=pNew; /*头指针指向首结点*/ } else { pNew->pNext=NULL; /*新结点的指针为空*/ pEnd->pNext=pNew; /*原来的尾结点指向新结点*/ pEnd=pNew; /*pEnd指向新结点*/ } pNew=(union Membership*)malloc(sizeof(union Membership)); /*再次分配节点内存空间*/ scanf("%s",&pNew->cStatus); scanf("%s",&pNew->cName); scanf("%d",&pNew->iNumber); scanf("%s",&pNew->cSex); scanf("%d",&pNew->Text.iClass); scanf("%s",&pNew->Text.cStaff); scanf("%d",&pNew->iGo); } free(pNew); /*释放无用空间*/ return pHead; } void Print(union Membership* pHead) { union Membership *pTemp; /*定义临时指针*/ int iIndex=1; /*定义结点序号*/ printf("数据库中共有%d个人\n",iCount); printf("\n"); pTemp=pHead; /*指针得到首结点地址*/ while(pTemp!=NULL) { printf("第%d个人员信息如下:\n"); printf("身份:%s\n",pTemp->cStatus); printf("姓名:%s\n",pTemp->cName); printf("编号:%d\n",pTemp->iNumber); printf("性别:%s\n",pTemp->cSex); printf("班级:%d",pTemp->Text.iClass); printf("职务:%s\n",pTemp->Text.cStaff); printf("\n"); pTemp=pTemp->pNext; /*移动临时指针到下一个结点*/ iIndex++; } } int main() { union Membership *pHead; /*定义头结点*/ pHead=Create(); /*创建结点*/ Print(pHead); /*输出链表*/ return 0; /*程序结束*/ } ```
MFC全局变量的设定?!
创立了一个mfc工程A。 我在A.h中定义了一个数据结构类class B。 现在想声明一个B对象b,用于存放待管理的数据,要使所有的.cpp文件都能引用这个对象b,并且都能对b中数据进行操作。
有关内存的管理的问题
新手。在子函数中定义了结构体指针,并用malloc分配内存,将指针值返回到主函数,在主函数依然可以按照结构体访问这块内存 请问 子函数结束时 指针变量已经消亡了 但那一块内存的属性并没有变化 是不是有一些更具有全局性的东西在管理内存啊?
C语言 如何调用链表里的数据?
老师教我们写了一个动态链表,但我想把功能扩展一下,能够调用里面的数据,不但怎么会。 我希望能用一个数组存放每个结构体的头地址,然后在指定第n个学生成绩时,能通过数组存放的头地址来输出对应存放的一组数据。注:不希望用二维数组存放所有数据,这样就不节省空间了。希望用一维数组仅存放头地址,来指向输出。 求大神帮帮我QAQ! ``` #include<stdio.h> #include<stdlib.h> #define LEN sizeof(struct Student) struct Student { int num; //数据结构中放一个学生编号 float score; //数据结构中放一个成绩 struct Student *next; //放一个指向本结构体的指针 }; int n; //定义一个全局变量,n表示存放的第几个结构体 struct Student *start(void) { struct Student *head, *p1, *p2; n = 0; p1 = p2 = (struct Student *) malloc(LEN); //在输入数值之前需要先分配内存 scanf("%d,%f", &p1->num, &p1->score); //输入要存储的数值 head = NULL; while (p1->num != NULL) { n = n + 1; if (n == 1)head = p1; //如果是输入了第一个数则链表开始分配内存,将第一个数据给head指针 else p2->next = p1; p2 = p1; p1 = (struct Student *) malloc(LEN); //在开辟一个新的P1内存存储下一个数据 scanf("%d,%f", &p1->num, &p1->score); } p2->next = NULL; return(head); } void print(struct Student *head) { struct Student *p; printf("\nNow,These %d records are:\n", n); p = head; while (p != NULL) { printf("%d,%3f\n", p->num, p->score); p = p->next; } } int main(void) { int s; struct Student *pt; pt = start(); print(pt); return 0; } ```
python正则表达式如何封装
一个文本处理函数,需要经常调用正则表达式,文档结构类似于: ``` def function(): match=re.match(pattern,string) # 省略 ``` 现在的问题是,这个function是经常被其它函数调用的: (1)如果把正则表达式的定义写在function里面,每调用一次function就会重新对这个正则表达式进行编译,会占用很多时间; (2)如果把正则表达式的定义和编译写在function外面作为全局变量,由于需要用到的正则表达式很多,每个正则表达式都声明为一个全局变量不太合适,请问如何封装比较好?
c语言 自己写的zz代码不知道怎么连续输入链表每一个节点的数据 求大佬帮忙
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<malloc.h> //定义全局变量 int isEmpty=0;//标志,判断链表是否为空 //!!!定义单链表结构体!!! typedef struct Node{ int NUM;//类型总数 int NAME;//各类型名称 int num; //各类型下的货物总数 struct Node*next; }Node; //函数声明 Node*create(Node*L); Node*input(Node*L); Node*output(Node*L); Node*outnum(Node*L); Node*outname(Node*L); Node*current(Node*L); void search(Node*L); void print(Node*L); void searchnum(Node*L); void searchname(Node*L); void display(Node*L); //========新增加的函数======== Node*append(Node*L); //主函数 void main() { printf("欢迎使用我的仓库管理系统!\n"); while(1); { //主菜单开始 printf("==========================\n"); printf("1.显示货物类型列表\n"); printf("2.增加货物类型\n"); printf("3.删除货物类型\n"); printf("4.货物入库\n"); printf("5.货物出库\n"); printf("6.库存显示\n"); printf("7.退出\n"); printf("==========================\n"); //主菜单结束 printf("选择1-7:"); scanf("%d",&x); switch(x) { case 1:;break; case 2:append(L);break; case 3:;break; case 4:;break; case 5:;break; case 6:;break; case 7:;break; default:printf("input error!\nplaese input1-7"); } } } //函数 //1.创建链表节点 Node*create(Node*L) { Node*pTail=L; L->next=NULL; Node*p; p=(Node*)malloc(sizeof(Node)); if(p==NULL) { printf("申请内存空间失败!\n"); } //利用尾插建立单链表 pTail->next=p; p->next=NULL; pTail=p; } //2.增加货物类型 Node*append(Node*L) { }
|undefined reference to `init_student_info_list'| 怎么解决?
大一c语言作业出现bug,求解决 ```main #include "student.h" #include <stdlib.h> #include <stdio.h> void menu(); //学生信息链表 student_info* student_list; //用户可以选择1-7可以分别进行学生信息的查看、添加、删除,修改,计算平均成绩,保存,退出系统操作。 int main() { int choice; int num; printf("**************************\n"); printf("欢迎使用学生信息管理系统\n"); printf("**************************\n"); printf("-----------------------------\n"); init_student_info_list(); if(read_file()) printf("从文件中读取学生信息成功.\n"); else printf("从文字中读取学生信息失败.\n"); printf("-----------------------------\n"); menu(); while(1) { printf("请选择操作: "); scanf("%d",&choice); switch(choice) { case 1: if(student_list_empty()) printf("学生信息表为空,请先添加学生信息.\n"); else display_student_info(); break; case 2: if(add_student_info()) printf("添加学生信息成功.\n"); else printf("添加学生信息失败.\n"); break; case 3: if(student_list_empty()) printf("学生信息表为空,请先添加学生信息.\n"); else { printf("请输入要删除学生信息的学号: "); scanf("%d",&num); if(delete_student_info(num)) printf("成功删除该学号对应的学生信息.\n"); else printf("删除失败.\n"); } break; case 4: if(student_list_empty()) printf("学生信息表为空,请先添加学生信息.\n"); else { printf("请输入要修改学生信息的学号: "); scanf("%d",&num); if(modify_student_info(num)) printf("成功修改该学号对应的学生信息.\n"); else printf("修改失败.\n"); } break; case 5: if(student_list_empty()) printf("学生信息表为空,请先添加学生信息.\n"); else display_average(); break; case 6: if(student_list_empty()) printf("学生信息表为空,请先添加学生信息.\n"); else if(save_file()) printf("保存学生信息成功.\n"); else printf("保存学生信息失败.\n"); break; case 0: printf("欢迎下次使用,再见.\n"); system("pause"); exit(0); break; default: printf("输入错误,请重新选择操作.\n"); } } system("pause"); return 0; } void menu() { printf("1.查看学生信息.\n"); printf("2.添加学生信息.\n"); printf("3.删除学生信息.\n"); printf("4.修改学生信息.\n"); printf("5.输出平均成绩.\n"); printf("6.保存学生信息.\n"); printf("0.退出系统操作.\n"); } ``` student。h #ifndef STUDENT_HEAD #define STUDENT_HEAD typedef struct node /*定义结构体*/ { int num; //学号 char name[15];//姓名 char sex[9]; //性别 int age; //年龄 int english; //英语成绩 int math; //数学成绩 int computer;//计算机成绩 int average; //平均成绩 struct node *next; //链表指针域 }student_info; //学生信息链表 extern student_info* student_list; //全局变量声明 //初始化函数声明 //初始化学生信息链表 void init_student_info_list(); //判断学生信息链表是否为空 int student_list_empty(); //操作函数声明 //向学校信息表中添加学生信息记录 int add_student_info(); //根据学号删除学生信息 int delete_student_info(int num); //根据学号修改学生信息 int modify_student_info(int num); //根据学号查找学生信息 student_info* search_student_info(int num); //输出每个学生的平均成绩 void display_average(); //显示所有学生信息 void display_student_info(); //将学生信息保存到文件 int save_file(); //从文件中读取学生信息 int read_file(); #endif ``` student。cpp #include "student.h" #include <stdio.h> #include <string.h> #include <malloc.h> //初始化学生信息链表 void init_student_info_list() { //学生信息链表头结点 student_list = (student_info*)malloc(sizeof(student_info)); student_list->next = NULL; } //判断学生信息链表是否为空 int student_list_empty() { return student_list->next == NULL; } //操作函数实现 //向学校信息表中添加学生信息记录 int add_student_info() { student_info *pstu = (student_info*)malloc(sizeof(student_info)); if(pstu == NULL) { printf("内存分配失败.\n"); return 0; } printf("请按要求一次输入学生的信息.\n"); printf("请输入学号: "); scanf("%d",&pstu->num); //判断该学号是否已经存在 if(search_student_info(pstu->num) != NULL) { printf("该学号已经存在学生信息表中.\n"); return 0; } printf("请输入姓名: "); getchar(); gets(pstu->name); printf("请输入性别: "); scanf("%s",pstu->sex); printf("请输入年龄: "); scanf("%d",&pstu->age); printf("请输入英语成绩: "); scanf("%d",&pstu->english); printf("请输入数学成绩: "); scanf("%d",&pstu->math); printf("请输入计算机成绩: "); scanf("%d",&pstu->computer); pstu->average = (pstu->english + pstu->math + pstu->computer)/3; //每次从学生信息链表的头部插入; pstu->next = student_list->next; student_list->next = pstu; return 1; } //根据学号删除学生信息 int delete_student_info(int num) { student_info *pstu; student_info *qstu; if(search_student_info(num) == NULL) { printf("不存在该学好为%d的学生信息.\n",num); return 0; } pstu = student_list->next; qstu = student_list; while(pstu->num != num) { qstu = pstu; pstu = pstu->next; } qstu->next = pstu->next; free(pstu); return 1; } //根据学号修改学生信息 int modify_student_info(int num) { int choice; student_info *pstu = search_student_info(num); if(pstu == NULL) { printf("不存在该学好为%d的学生信息.\n",num); return 0; } printf("1.姓名 2.性别 3.年龄 4.英语成绩 5.数学成绩 6.计算机成绩.\n"); printf("请选择修改的信息: "); scanf("%d",&choice); switch(choice) { case 1: printf("请输入新的姓名: "); getchar(); gets(pstu->name); break; case 2: printf("请输入新的性别: "); scanf("%s",pstu->sex); break; case 3: printf("请输入新的年龄: "); scanf("%d",&pstu->age); break; case 4: printf("请输入新的英语成绩: "); scanf("%d",&pstu->english); break; case 5: printf("请输入新的数学成绩: "); scanf("%d",&pstu->math); break; case 6: printf("请输入新的计算机成绩: "); scanf("%d",&pstu->computer); break; default: printf("请按提示要求操作.\n"); } return 1; } //根据学号查找学生信息 student_info* search_student_info(int num) { student_info *pstu; pstu = student_list->next; while(pstu && pstu->num != num) { pstu = pstu->next; } return pstu; } //输出每个学生的平均成绩 void display_average() { student_info *pstu; pstu = student_list->next; while(pstu) { printf("学号为%d,姓名为%s的学生平均成绩为: %d\n",pstu->num,pstu->name,pstu->average); pstu = pstu->next; } } //显示所有学生信息 void display_student_info() { student_info *pstu; pstu = student_list->next; printf("所有学生信息如下所示.\n"); printf("学号\t姓名\t性别\t年龄\t英语\t数学\t计算机\t平均成绩.\n"); while(pstu) { printf("%d\t",pstu->num); printf("%s\t",pstu->name); printf("%s\t",pstu->sex); printf("%d \t",pstu->age); printf("%d \t",pstu->english); printf("%d \t",pstu->math); printf("%d \t",pstu->computer); printf("%d\n",pstu->average); pstu = pstu->next; } } //将学生信息保存到文件 int save_file() { FILE *pfile; student_info *pstu; pfile = fopen("student.txt","w"); if(pfile == NULL) { printf("打开文件失败.\n"); return 0; } pstu = student_list->next; while(pstu) { fprintf(pfile,"%5d%15s%9s%3d%4d%4d%4d%4d",pstu->num,pstu->name,pstu->sex,pstu->age, pstu->english,pstu->math,pstu->computer,pstu->average); pstu = pstu->next; } fclose(pfile); return 1; } //从文件中读取学生信息 int read_file() { FILE *pfile; student_info *pstu; pfile = fopen("student.txt","r"); if(pfile == NULL) { printf("打开文件失败.\n"); return 0; } while(!feof(pfile)) { pstu = (student_info*)malloc(sizeof(student_info)); fscanf(pfile,"%5d%15s%9s%4d%4d%4d%4d%4d",&pstu->num,pstu->name,pstu->sex,&pstu->age, &pstu->english,&pstu->math,&pstu->computer,&pstu->average); pstu->average = (pstu->english + pstu->math + pstu->computer)/3; //每次从学生信息链表的头部插入; pstu->next = student_list->next; student_list->next = pstu; } fclose(pfile); return 1; } ``` 用code blokes运行 出现 D:\Projects\C\3\main.c|19|undefined reference to `init_student_info_list'| D:\Projects\C\3\main.c|20|undefined reference to `read_file'| D:\Projects\C\3\main.c|33|undefined reference to `student_list_empty'| 怎么解决啊?
c 调用函数时要传递很多零散的参数,看起来很蠢,怎么办,是程序设计问题?
比如: 测试函数A(缓存地址,图像宽度,默认颜色,...){ ... 判断某点是否是默认颜色(...) if(...){ ... 判断某点是否是默认颜色(...) ... 测试函数B(...) } } 测试函数B(缓存地址,图像宽度,默认颜色,...){ ... 判断某点是否是默认颜色(...) } BOOL 判断某点是否是默认颜色(缓存地址,图像宽度,默认颜色,...){ ... } 多处要判断颜色,要多个参数,怎么办... 要为一些不关联的数据定义一个结构体吗?好像不太好。 有结构体以后参数还是要一级一级向下传。 要把零散的参数定义成全局变量吗?也不好吧。 全局的东西不该是越少越好吗,这样不简洁。 在主函数中定义子函数,这样不用传参数了。 可是不允许。 怎么办,或者是程序设计问题?
基于keras写的模型中自定义的函数(如损失函数)如何保存到模型中?
```python batch_size = 128 original_dim = 100 #25*4 latent_dim = 16 # z的维度 intermediate_dim = 256 # 中间层的维度 nb_epoch = 50 # 训练轮数 epsilon_std = 1.0 # 重参数 #my tips:encoding x = Input(batch_shape=(batch_size,original_dim)) h = Dense(intermediate_dim, activation='relu')(x) z_mean = Dense(latent_dim)(h) # mu z_log_var = Dense(latent_dim)(h) # sigma #my tips:Gauss sampling,sample Z def sampling(args): # 重采样 z_mean, z_log_var = args epsilon = K.random_normal(shape=(128, 16), mean=0., stddev=1.0) return z_mean + K.exp(z_log_var / 2) * epsilon # note that "output_shape" isn't necessary with the TensorFlow backend # my tips:get sample z(encoded) z = Lambda(sampling, output_shape=(latent_dim,))([z_mean, z_log_var]) # we instantiate these layers separately so as to reuse them later decoder_h = Dense(intermediate_dim, activation='relu') # 中间层 decoder_mean = Dense(original_dim, activation='sigmoid') # 输出层 h_decoded = decoder_h(z) x_decoded_mean = decoder_mean(h_decoded) #my tips:loss(restruct X)+KL def vae_loss(x, x_decoded_mean): xent_loss = original_dim * objectives.binary_crossentropy(x, x_decoded_mean) kl_loss = - 0.5 * K.mean(1 + z_log_var - K.square(z_mean) - K.exp(z_log_var), axis=-1) return xent_loss + kl_loss vae = Model(x, x_decoded_mean) vae.compile(optimizer='rmsprop', loss=vae_loss) vae.fit(x_train, x_train, shuffle=True, epochs=nb_epoch, verbose=2, batch_size=batch_size, validation_data=(x_valid, x_valid)) vae.save(path+'//VAE.h5') ``` 一段搭建VAE结构的代码,在保存模型后调用时先是出现了sampling中一些全局变量未定义的问题,将变量改为确定数字后又出现了vae_loss函数未定义的问题(unknown loss function: vae_loss) 个人认为是模型中自定义的函数在保存上出现问题,但是也不知道怎么解决。刚刚上手keras和tensorflow这些框架,很多问题是第一次遇到,麻烦大神们帮帮忙!感谢!
VS 句柄问题,为什么句柄类型符号写入后还是黑色的
#include<stdio.h> #include<stdlib.h> #include<windows.h> //光标设置的API #include<time.h> //食物随机 #include<conio.h> //按键监控 //辅助宏定义 #define MAPHEIGHT 25 //窗口属性 #define MAPWIDTH 60 #define SNAKESIZE 50 //蛇的最大节数 //数据设计 ////////////// //食物的结构体 struct { int x; int y; }food; //蛇的结构体 struct { //记录每节射的坐标 int x[SNAKESIZE]; int y[SNAKESIZE]; int len; //蛇长度 int speed; //射速度 }snake; /////全局变量 int key = 'w'; //初始化移动方向 int changwFlag = 0; //蛇的变化标记 //模块化设计 函数设计--》功能划分--》抽象到函数 ///////////////////////////////////////////////// //// 怎么抽像:具体了解业务逻辑 int main() { printf("Game Over\n"); system("pause"); return 0; } //画地图 void createMap(); //事物产生 void creatFood(); //按键操作 void keyDown(); //蛇的状态 int snakeStatus(); //辅助函数 void gotoxy(int x,int y) { //调用win32 API 设置控制台的光标位置 //1找到控制台的这个窗口 HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); //光标结构体 COORD coord; coord.X = x; coord.Y = y; }![图片说明](https://img-ask.csdn.net/upload/201907/07/1562481992_746563.png)
编程绘制小球的动态碰撞轨迹?
编程绘制小球的动态碰撞轨迹。在屏幕的同一水平线上(设备坐标系)有两个小球,当第一个小球撞击另一个小球后,前者静止,后者将沿前一个小球的运动方向继续运动。 ``` //程序名称:printf()动画—运动的小球 #include<stdio.h> #include<windows.h> #include<stdlib.h> #include<conio.h> //定义延时时间,运动区的宽度和高度 #define DELAY 100 #define WIDTH 80 #define HEIGHT 24 //定义全局变量,位置和速度 int X1 = 0, Y1 =10,X2=40,Y2=10; int Vx1 = 1, Vy1 = 0,Vx2=1,Vy2=0; int t,i=0; //函数声明 void Ball(); void HideCursor(); void GotoXy(int x, int y); int main(void) { //接收键盘数据的变量 char ch = '\0'; system("color 2C"); system("title 运动的小球-动量守恒"); //隐藏光标 HideCursor(); //ESC退出 while(ch != 27) { Ball(); if(kbhit()) ch = getch(); } system("cls"); //结束程序 return 0; } //计算球的轨迹 void Ball() { //画球 GotoXy(X1, Y1); printf("●"); GotoXy(X2,Y2); printf("●"); //延时 Sleep(DELAY); //擦球 GotoXy(X1, Y1); printf(" "); GotoXy(X2,Y2); printf(""); //触界反弹 if(0==X1&&Vx1<0) {putchar('\007'); } if((WIDTH - 2) == X2 && Vx2 > 0) {Vx2 *= -1; putchar('\007');} if(X1=X2-2) {t=Vx1; Vx1=Vx2; Vx2=t; i*=-1; putchar('\007'); } //计算下一个周期的位置 switch(i) { case 1: X1 += 2 * Vx1;break; case -1: X2 += 2 * Vx2;break; } } //隐藏光标,头文件<windows.h> void HideCursor() { CONSOLE_CURSOR_INFO cursor_info = {1, 0}; //后边的0代表光标不可见 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info); } //光标移动,头文件<windows.h> void GotoXy(int x, int y) { HANDLE hout; //定义句柄变量hout COORD coord; //定义结构体coord coord.X = x; coord.Y = y; hout = GetStdHandle(STD_OUTPUT_HANDLE); //获得标准输出(屏幕)句柄 SetConsoleCursorPosition(hout, coord); //移动光标 } ```
关于数据结构的hanoi塔问题
void hanoi (int n, char x,char y, char z) //将塔座x上按直径由小到大且自上而下编号为1至n个圆盘按规则搬到塔座z上,y可用作辅助塔座。 //搬动操作move(x,n,z)可定义为(c是初值为0的全局变量,对搬动计数); //printf("%i.Move disk %i from %c to %c\n", ++c,n, x, z); { if(n==1) move(x,1,z); else{ hanoi(n-1, x, z, y);//第五步 move(x, n. z);//第六步 hanoi(n-1, y, x, z);//第七步 } } 这里的5、6、7都不怎么能理解。 当n=3的时候,到5的时候怎么到move去啊,还有n=1的时候是不是只有x柱子上只有1个的时候到z柱么!
关于c语言从文件中读取学生信息,处理并打印
![图片说明](https://img-ask.csdn.net/upload/201712/07/1512617928_774992.png) b) 建议函数流程: i. 打开数据文件,失败返回-1; ii. 从头到尾扫描数据文件(即预读一遍)获得学生人数; iii. 根据学生人数,利用malloc和sizeof等函数或运算符为struct student** pStudents分配内存; iv. 利用rewind函数,定位到文件头; v. 读取数据文件,并把每一条记录通过数组下标法或指针法保存到结构体数组pStudents中; vi. 关闭文件; vii. 返回学生人数。 c) 数据文件格式说明: 一行一条学生信息的记录,不同属性用空格隔开,输入数据中无总成绩记录,例如: 张三 通信 89 93 95 李四 网络 88 91 94 王五 物联网 71 94 88 3. 编写统计函数: a) 函数定义void Count(struct student pStudents[], int num)。输入参数分别为保存学生的结构体数组和学生人数。 b) 功能为:统计所有学生的总成绩和每个专业(假定一共三个专业:通信,网络,物联网)的平均成绩;输入参数包括学生信息结构体数组,学生人数,返回的每个学生的总成绩直接填充到对应的输入结构体数组对应字段中。统计信息包括三个专业的总人数、平均成绩数组,用全局变量来表示。访问每个学生信息的时候,用指针来指向当前正在处理的学生。 c) 设计一个或者三个带参数的宏,判断输入的字符串是否是指定的专业名称,并在函数Count中使用。 5. 编写main函数实现: a) 定义变量,其中保存学生信息的数据文件直接在源代码中初始化; b) 读取学生信息,如果失败,打印失败信息并退出程序; c) 统计学生信息; d) 输出统计信息。 e) 释放内存。 ``` #include <stdio.h> #include <stdlib.h> #include <string.h> struct student{ char name[15]; char major[15]; int Eng_sco; int cal_sco; int c_sco; int sum; }; int tx_per=0,tx_ave,tx_sum=0; int wl_per=0,wl_ave,wl_sum=0; int wlw_per=0,wlw_ave,wlw_sum=0; int ReadStudentInfo(const char* filename, struct student** pStudents); void Count(struct student pStudents[], int num); int main() { int count; int m; struct student *list; count=ReadStudentInfo("readme.txt", &list); printf("学生信息: \n"); printf("----------------------------------------------------\n"); printf("序号 姓 名 专业名称 英语成绩 线性代数成绩 c语言成绩 总成绩\n"); for(m=1;m<=count;m++) { printf("%4d %s %s %4d %4d %4d %4d\n",m,(list+m-1)->name,(list+m-1)->major,(list+m-1)->Eng_sco,(list+m-1)->cal_sco,(list+m-1)->c_sco,(list+m-1)->sum); } Count(list, count); printf("\n统计信息 :\n"); printf("----------------------------------------------------\n"); printf("序号 专业名称 学生人数 平均成绩\n"); printf(" 1 通信 %d %d\n",tx_per,tx_ave); printf(" 2 网络 %d %d\n",wl_per,wl_ave); printf(" 3 物联网 %d %d\n",wlw_per,wlw_ave); return 0; } int ReadStudentInfo(const char* filename, struct student** pStudents) { FILE *fp; char ch; int i=1,j; fp=fopen(readme.txt,"r"); if(fp==NULL) { printf("cann't open the file"); exit(-1); } ch=fgetc(fp); while(ch!=EOF) { if(ch=='\n') { i++; } ch=fgetc(fp); } rewind(fp); *pStudents=(struct student*)malloc(sizeof(** pStudents)*i); for(j=0;j<i;j++) { fread(&*pStudents[j],sizeof(struct student)-sizeof(int),1,fp); (*pStudents+j)->sum=((*pStudents+j)->Eng_sco+(*pStudents+j)->cal_sco+(*pStudents+j)->c_sco); } fclose(fp); return i; } void Count(struct student pStudents[], int num) { int n=1; for(n=1;n<=num;n++) { if(!strcmp((pStudents+n-1)->major,"通信")) { tx_per++; tx_sum=tx_sum+(pStudents+n-1)->sum; } if(!strcmp((pStudents+n-1)->major,"网络")) { wl_per++; wl_sum=wl_sum+(pStudents+n-1)->sum; } if(!strcmp((pStudents+n-1)->major,"物联网")) { wlw_per++; wlw_sum=wlw_sum+(pStudents+n-1)->sum; } tx_ave=tx_sum/tx_per; wl_ave=wl_sum/wl_per; wlw_ave=wlw_sum/wlw_per; } free(pStudents); } ``` 运行不起来,是哪里出问题了?
C++实现单链表,如何创建一个滑动的指针?
我们老师要求我们做 插入当前结点 的函数。我不太理解这个当前结点的意思。 我的想法是:先让用户search,返回一个指针p,指向某个结点a。然后insertcurrent,就是在a结点后插入新结点。 问题:我怎么把这个指针p传入insertcurrent?? 我在list类里面定义了一个Node*p,执行起来程序会奔溃,如图。 #include <iostream> using namespace std; struct Node{ int data; Node *next; }; class List{ Node *head;//头结点 Node *p;//滑动指针 public: List(){ //构造函数 head=new Node; head->next=NULL; } ~List(){ //析构函数 while(head){ //循环删除 p=head; head=head->next; delete p; } head=NULL; } void CreatList(int n); void InsertCurrent(int item); void InsertHead(int item); void InsertTail(int item); void DeleteCurrent(); void DeleteHead(); void DeleteTail(); int FindCurrent(); int FindK(int k); int Search(int item); void Outputlist(); }; void List::CreatList(int n){ //创建长度为n的链表 Node *p,*s; p=head; cout<<"请依次输入"<<n<<"个元素的值"<<endl; for(int i=0;i<n;i++){ s=new Node; cin>>s->data; s->next=p->next; p->next=s; p=s; } }; void List::InsertCurrent(int item)//插入在当前结点后 { Node *s;//s指向要插入的结点 s=new Node;//动态分配一个新结点 s->data=item;//设item为此结点 s->next=p->next;//s的next指针指向p的后继结点 p->next=s;//p的next指针指向s return; } void List::InsertHead(int item)//插入在表头后 { p=head; Node *s; s=new Node; s->data=item; s->next=p->next; p->next=s; return; } void List::InsertTail(int item)//插入在表尾后 { p=head; int i=0; while (p->next!=NULL) { p=p->next; i++; } Node *s; s=new Node; s->data=item; s->next=NULL; p->next=s; return; } void List::DeleteCurrent()//删除当前结点的后继结点 { Node *q; if(p==NULL){return;} q=p->next; p->next=q->next; delete p; } void List::DeleteHead()//删除表头 { p=head; head=p->next; delete p; } void List::DeleteTail()//删除表尾 { p=head; int i=0; while (p->next!=NULL){ p=p->next; i++; } while (p->next!=NULL){ p=p->next; i++; } p->next=NULL; } int List::FindCurrent()//存取当前结点的值 { int item; item=p->data;// return item; } int List::FindK(int k)//存取第K个结点的值 { int item; if(k<1){return -1;} else{ p=head; int i=0; while(p!=NULL&&i<k){ p=p->next; i++; } if(p==NULL){return -1;} item=p->data; return item; } } int List::Search(int item)//查找结点 { p=head; int i=0; while(p!=NULL&&item==p->data){ p=p->next; i++; } if(p!=NULL){return i;} else{return -1;} } void List::Outputlist()//输出函数 { p = head; while (p != NULL) { cout << p->data<<"->"; p = p->next; } cout << endl; return; } int main() { int n,q, w, e,r,g = 0; List a; cout<<"输入链表长度"<<endl; cin>>n; a.CreatList(n); cout << "创建成功,链表为:"; a.Outputlist(); cout << "请输入插入表头的数:"; cin >> q; a.InsertHead(q); cout << "插入表头后链表为:"; a.Outputlist(); cout << "请输入插入表尾的数:"; cin >> w; a.InsertTail(w); cout << "插入表尾后链表为:"; a.Outputlist(); cout << "请输入插入当前的数:" ; cin >> e; a.InsertCurrent(e); cout << "插入表中后链表为:"; a.Outputlist(); a.DeleteTail(); cout << "删除尾节点后链表为:"; a.Outputlist(); a.DeleteHead(); cout << "删除头节点后链表为:"; a.Outputlist(); a.DeleteCurrent(); cout << "删除头节点后链表为:"; a.Outputlist(); a.FindCurrent(); cout << "请输入想查找的第几个数:"; cin >> r; cout << "查找的第" << r << "个的值为" << a.FindK(r); a.Search(g); ![图片说明](https://img-ask.csdn.net/upload/201710/20/1508488242_878147.png) return 0; }
大一作业:有关链表的问题
可以帮忙看一下这些代码吗?该代码的目的是实现物品 的输入,然后把输入的物品用链表串联起来,老师我我们写一个物品竞拍的管理系统, 刚开始就遇到问题了,求大神帮帮; #include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> #include <ctime> #include <algorithm> typedef struct things //物品信息:编号,名称,价格,朝代,简介 { int id; char name[30]; int price; char dynasty[10]; char introduce[100]; struct things *next; struct user *user; struct UserThings *UserThings; }things,*thing; //定义全局变量 thing head; void insert_thing(thing thing1) //物品结构体插入 { thing p1,s; p1 = head; s = thing1; if(p1->next == NULL) { printf("jdj"); s->next = p1->next; p1->next = s; } else { while(p1->next->id < s->id && p1->next != NULL)//按id从小到大排序 { p1 = p1->next; } if(p1->next != NULL && p1->next->id == s->id)//如果有相同的编号 { printf("该编号已存在,请从新输入\n"); } else { s->next = p1->next; p1->next = s; } } } void input_thing() //物品信息录入 { thing thing1; thing1 = (things*)malloc(sizeof(things)); printf("\n请输入物品数据,输入0结束输入."); printf("\n请输入物品ID(8位数字):"); scanf("%d",&thing1->id); while(thing1->id!=0) { //initialize and create printf("\n请输入物品名称:"); scanf("%s",thing1->name); printf("\n请输入物品朝代(如唐代):"); scanf("%s",thing1->dynasty); printf("\n请输入物品价格:"); scanf("%d",&thing1->price); printf("\n请输入物品介绍(140字以内):"); scanf("%s",thing1->introduce); thing1->next=NULL; thing1->user=NULL;// insert_thing(thing1); //select_n(p1); printf("\n请输入物品ID(8位数字):"); scanf("%d",&thing1->id); } } int main() { head = (things*)malloc(sizeof(things));//刚开始忘了给头指针分配空间 head->next = NULL; input_thing(); printf("%d",head->next->id);//输出第一个节点(用来测试的) } 问题:这个链表串联不起来,可能是我在使用指针 的过程中理解错了一些东西,求大神帮帮,谢谢。而且我在最后输入id跳出循环的时候,主函数的printf("%d",head->next->id)输出的是最后输入的id(也就是0,因为我跳出循环的条件是0)
关于 数据结构 线索二叉树的建立和实现
学习了严蔚敏的《数据结构》为了加深映像,把上面的代码自己敲了一遍。在VC6.0里,编译 和链接都通过了,但是没有办法运行,恳求各位高手和大师告诉我,哪里出问题了,我实在 是找不出来啊!!! #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include "math.h" typedef char TElemType; typedef enum PointerTag{Link,Thread}; typedef struct BiThrNode//建立线索二叉树的储存结构 { TElemType data; struct BiThrNode *lchild,*rchild; PointerTag LTag,RTag; }BiThrNode,*BiThrTree; BiThrTree pre;//定义的全局变量, void CreateBiTree(BiThrTree &T)//创建线索二叉树 { for(int i=1;i<7;++i) { char ch; scanf("%c",&ch); if(ch==' ') { T=NULL; } else { if(!(T=(BiThrNode*)malloc(sizeof(BiThrNode)))) { exit(OVERFLOW); } T->data=ch; CreateBiTree(T->lchild); CreateBiTree(T->rchild); } } } void InThreading(BiThrTree p)//中序遍历进行中序线索化 { if(p) { InThreading(p->lchild); if(!p->lchild) { p->LTag=Thread; p->lchild=pre; } if(!pre->rchild) { pre->RTag=Thread; pre->rchild=p; } pre=p; InThreading(p->rchild); } } void InOrderThreading(BiThrTree &Thrt,BiThrTree T)//建立头结点,中序线索化二叉树 { if(!(Thrt=(BiThrTree)malloc(sizeof(BiThrNode)))) exit(OVERFLOW); Thrt->LTag=Link; Thrt->RTag=Thread; Thrt->rchild=Thrt; if(!T) T->lchild=Thrt; else { Thrt->lchild=T; pre=Thrt; InThreading(T); pre->rchild=Thrt; pre->RTag=Thread; Thrt->rchild=pre; } } int InOrderTraverse_Thr(BiThrTree T)//中序遍历线索二叉树 { BiThrTree p; p=T->lchild; while(p!=T) { while(p) p=p->lchild; if(p->data) return 0; while(p->RTag==Thread&&p->rchild!=T) { p=p->rchild; printf("%c",p->data); } p=p->rchild; } return 1; } int main(int argc, char* argv[]) { BiThrTree T; BiThrTree Thr; printf("请输入前序二叉树的内容;\n"); CreateBiTree(T); //建立二叉树 InOrderThreading(T,T); //加入头结点,并线索化 printf("输出中序二叉树的内容:\n"); InOrderTraverse_Thr(T); printf("\n"); return 0; }
动态规划入门到熟悉,看不懂来打我啊
持续更新。。。。。。 2.1斐波那契系列问题 2.2矩阵系列问题 2.3跳跃系列问题 3.1 01背包 3.2 完全背包 3.3多重背包 3.4 一些变形选讲 2.1斐波那契系列问题 在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n&gt;=2,n∈N*)根据定义,前十项为1, 1, 2, 3...
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私...
对计算机专业来说学历真的重要吗?
我本科学校是渣渣二本,研究生学校是985,现在毕业五年,校招笔试、面试,社招面试参加了两年了,就我个人的经历来说下这个问题。 这篇文章很长,但绝对是精华,相信我,读完以后,你会知道学历不好的解决方案,记得帮我点赞哦。 先说结论,无论赞不赞同,它本质就是这样:对于技术类工作而言,学历五年以内非常重要,但有办法弥补。五年以后,不重要。 目录: 张雪峰讲述的事实 我看到的事实 为什么会这样 ...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
Python 植物大战僵尸代码实现(2):植物卡片选择和种植
这篇文章要介绍的是: - 上方植物卡片栏的实现。 - 点击植物卡片,鼠标切换为植物图片。 - 鼠标移动时,判断当前在哪个方格中,并显示半透明的植物作为提示。
防劝退!数据结构和算法难理解?可视化动画带你轻松透彻理解!
大家好,我是 Rocky0429,一个连数据结构和算法都不会的蒟蒻… 学过数据结构和算法的都知道这玩意儿不好学,没学过的经常听到这样的说法还没学就觉得难,其实难吗?真难! 难在哪呢?当年我还是个小蒟蒻,初学数据结构和算法的时候,在忍着枯燥看完定义原理,之后想实现的时候,觉得它们的过程真的是七拐八绕,及其难受。 在简单的链表、栈和队列这些我还能靠着在草稿上写写画画理解过程,但是到了数论、图...
【搞定 Java 并发面试】面试最常问的 Java 并发基础常见面试题总结!
本文为 SnailClimb 的原创,目前已经收录自我开源的 JavaGuide 中(61.5 k Star!【Java学习 面试指南】 一份涵盖大部分Java程序员所需要掌握的核心知识。欢迎 Star!)。 另外推荐一篇原创:终极推荐!可能是最适合你的Java学习路线 方法 网站 书籍推荐! Java 并发基础常见面试题总结 1. 什么是线程和进程? 1.1. 何为进程? 进程是程...
西游记团队中如果需要裁掉一个人,会先裁掉谁?
2019年互联网寒冬,大批企业开始裁员,下图是网上流传的一张截图: 裁员不可避免,那如何才能做到不管大环境如何变化,自身不受影响呢? 我们先来看一个有意思的故事,如果西游记取经团队需要裁员一名,会裁掉谁呢,为什么? 西游记团队组成: 1.唐僧 作为团队teamleader,有很坚韧的品性和极高的原则性,不达目的不罢休,遇到任何问题,都没有退缩过,又很得上司支持和赏识(直接得到唐太宗的任命,既给
shell脚本:备份数据库、代码上线
备份MySQL数据库 场景: 一台MySQL服务器,跑着5个数据库,在没有做主从的情况下,需要对这5个库进行备份 需求: 1)每天备份一次,需要备份所有的库 2)把备份数据存放到/data/backup/下 3)备份文件名称格式示例:dbname-2019-11-23.sql 4)需要对1天以前的所有sql文件压缩,格式为gzip 5)本地数据保留1周 6)需要把备份的数据同步到远程备份中心,假如...
iOS Bug 太多,苹果终于坐不住了!
开源的 Android 和闭源的 iOS,作为用户的你,更偏向哪一个呢? 整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 毋庸置疑,当前移动设备操作系统市场中,Android 和 iOS 作为两大阵营,在相互竞争的同时不断演进。不过一直以来,开源的 Android 吸引了无数的手机厂商涌入其中,为其生态带来了百花齐放的盛景,但和神秘且闭源的 iOS 系统相比,不少网友...
神经⽹络可以计算任何函数的可视化证明
《Neural Networks and Deep Learning》读书笔记第四篇本章其实和前面章节的关联性不大,所以大可将本章作为小短文来阅读,当然基本的深度学习基础还是要有的。主要介绍了神经⽹络拥有的⼀种普遍性,比如说不管目标函数是怎样的,神经网络总是能够对任何可能的输入,其值(或者说近似值)是网络的输出,哪怕是多输入和多输出也是如此,我们大可直接得出一个结论:不论我们想要计算什么样的函数,...
聊聊C语言和指针的本质
坐着绿皮车上海到杭州,24块钱,很宽敞,在火车上非正式地聊几句。 很多编程语言都以 “没有指针” 作为自己的优势来宣传,然而,对于C语言,指针却是与生俱来的。 那么,什么是指针,为什么大家都想避开指针。 很简单, 指针就是地址,当一个地址作为一个变量存在时,它就被叫做指针,该变量的类型,自然就是指针类型。 指针的作用就是,给出一个指针,取出该指针指向地址处的值。为了理解本质,我们从计算机模型说起...
为什么你学不过动态规划?告别动态规划,谈谈我的经验
动态规划难吗?说实话,我觉得很难,特别是对于初学者来说,我当时入门动态规划的时候,是看 0-1 背包问题,当时真的是一脸懵逼。后来,我遇到动态规划的题,看的懂答案,但就是自己不会做,不知道怎么下手。就像做递归的题,看的懂答案,但下不了手,关于递归的,我之前也写过一篇套路的文章,如果对递归不大懂的,强烈建议看一看:为什么你学不会递归,告别递归,谈谈我的经验 对于动态规划,春招秋招时好多题都会用到动态...
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外...
字节跳动面试官这样问消息队列:分布式事务、重复消费、顺序消费,我整理了一下
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
如何安装 IntelliJ IDEA 最新版本——详细教程
IntelliJ IDEA 简称 IDEA,被业界公认为最好的 Java 集成开发工具,尤其在智能代码助手、代码自动提示、代码重构、代码版本管理(Git、SVN、Maven)、单元测试、代码分析等方面有着亮眼的发挥。IDEA 产于捷克,开发人员以严谨著称的东欧程序员为主。IDEA 分为社区版和付费版两个版本。 我呢,一直是 Eclipse 的忠实粉丝,差不多十年的老用户了。很早就接触到了 IDEA...
面试还搞不懂redis,快看看这40道面试题(含答案和思维导图)
Redis 面试题 1、什么是 Redis?. 2、Redis 的数据类型? 3、使用 Redis 有哪些好处? 4、Redis 相比 Memcached 有哪些优势? 5、Memcache 与 Redis 的区别都有哪些? 6、Redis 是单进程单线程的? 7、一个字符串类型的值能存储最大容量是多少? 8、Redis 的持久化机制是什么?各自的优缺点? 9、Redis 常见性...
大学四年自学走来,这些珍藏的「实用工具/学习网站」我全贡献出来了
知乎高赞:文中列举了互联网一线大厂程序员都在用的工具集合,涉及面非常广,小白和老手都可以进来看看,或许有新收获。
为什么要推荐大家学习字节码?
配套视频: 为什么推荐大家学习Java字节码 https://www.bilibili.com/video/av77600176/ 一、背景 本文主要探讨:为什么要学习 JVM 字节码? 可能很多人会觉得没必要,因为平时开发用不到,而且不学这个也没耽误学习。 但是这里分享一点感悟,即人总是根据自己已经掌握的知识和技能来解决问题的。 这里有个悖论,有时候你觉得有些技术没用恰恰是...
互联网公司的裁员,能玩出多少种花样?
裁员,也是一门学问,可谓博大精深!以下,是互联网公司的裁员的多种方法:-正文开始-135岁+不予续签的理由:千禧一代网感更强。95后不予通过试用期的理由:已婚已育员工更有责任心。2通知接下来要过苦日子,让一部分不肯同甘共苦的员工自己走人,以“兄弟”和“非兄弟”来区别员工。3强制996。员工如果平衡不了工作和家庭,可在离婚或离职里二选一。4不布置任何工作,但下班前必须提交千字工作日报。5不给活干+...
【超详细分析】关于三次握手与四次挥手面试官想考我们什么?
在面试中,三次握手和四次挥手可以说是问的最频繁的一个知识点了,我相信大家也都看过很多关于三次握手与四次挥手的文章,今天的这篇文章,重点是围绕着面试,我们应该掌握哪些比较重要的点,哪些是比较被面试官给问到的,我觉得如果你能把我下面列举的一些点都记住、理解,我想就差不多了。 三次握手 当面试官问你为什么需要有三次握手、三次握手的作用、讲讲三次三次握手的时候,我想很多人会这样回答: 首先很多人会先讲下握...
新程序员七宗罪
当我发表这篇文章《为什么每个工程师都应该开始考虑开发中的分析和编程技能呢?》时,我从未想到它会对读者产生如此积极的影响。那些想要开始探索编程和数据科学领域的人向我寻求建议;还有一些人问我下一篇文章的发布日期;还有许多人询问如何顺利过渡到这个职业。我非常鼓励大家继续分享我在这个旅程的经验,学习,成功和失败,以帮助尽可能多的人过渡到一个充满无数好处和机会的职业生涯。亲爱的读者,谢谢你。 -罗伯特。 ...
活到老,学到老,程序员也该如此
全文共2763字,预计学习时长8分钟 图片来源:Pixabay 此前,“网传阿里巴巴要求尽快实现P8全员35周岁以内”的消息闹得沸沸扬扬。虽然很快被阿里辟谣,但苍蝇不叮无缝的蛋,无蜜不招彩蝶蜂。消息从何而来?真相究竟怎样?我们无从而知。我们只知道一个事实:不知从何时开始,程序猿也被划在了“吃青春饭”行业之列。 饱受“996ICU”摧残后,好不容易“头秃了变强了”,即将步入为“高...
Vue快速实现通用表单验证
本文开篇第一句话,想引用鲁迅先生《祝福》里的一句话,那便是:“我真傻,真的,我单单知道后端整天都是CRUD,我没想到前端整天都是Form表单”。这句话要从哪里说起呢?大概要从最近半个月的“全栈工程师”说起。项目上需要做一个城市配载的功能,顾名思义,就是通过框选和拖拽的方式在地图上完成配载。博主选择了前后端分离的方式,在这个过程中发现:首先,只要有依赖jQuery的组件,譬如Kendoui,即使使用...
2019年Spring Boot面试都问了什么?快看看这22道面试题!
Spring Boot 面试题 1、什么是 Spring Boot? 2、Spring Boot 有哪些优点? 3、什么是 JavaConfig? 4、如何重新加载 Spring Boot 上的更改,而无需重新启动服务器? 5、Spring Boot 中的监视器是什么? 6、如何在 Spring Boot 中禁用 Actuator 端点安全性? 7、如何在自定义端口上运行 Sprin...
【图解】记一次手撕算法面试:字节跳动的面试官把我四连击了
字节跳动这家公司,应该是所有秋招的公司中,对算法最重视的一个了,每次面试基本都会让你手撕算法,今天这篇文章就记录下当时被问到的几个算法题,并且每个算法题我都详细着给出了最优解,下面再现当时的面试场景。看完一定让你有所收获 一、小牛试刀:有效括号 大部分情况下,面试官都会问一个不怎么难的问题,不过你千万别太开心,因为这道题往往可以拓展出更多有难度的问题,或者一道题看起来很简单,但是给出最优解,确实很...
关于裁员几点看法及建议
最近网易裁员事件引起广泛关注,昨天网易针对此事,也发了声明,到底谁对谁错,孰是孰非?我们作为吃瓜观众实在是知之甚少,所以不敢妄下定论。身处软件开发这个行业,近一两年来,对...
面试官:关于Java性能优化,你有什么技巧
通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化。 一般有两种方案:即优化代码或更改设计方法。我们一般会选择后者,因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能。而一个设计良好的程序能够精简代码,从而提高性能。 下面将提供一些在JAVA程序的设计和编码中,为了能够提高JAVA程序的性能,而经常采用的一些方法和技巧。 1.对象的生成和大小的调整。 J...
相关热词 c# id读写器 c#俄罗斯方块源码 c# linq原理 c# 装箱有什么用 c#集合 复制 c# 一个字符串分组 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图
立即提问