结构体数组指针可以直接赋值给结构体指针吗?

有一个结构体比如为
struct A {
struct *B;
struct *C;
};

struct B {
int id;
int pin;
};

struct C {
int a;
int b;
};

定义初始化struct B和struct C:
struct B b__arry[2] = {{12, 34}, {56, 78}};
struct C c__arry[2] = {{12, 34}, {56, 78}};

问题:
1. 能否这样初始化struct A?
struct A a = {b_arry, c_arry};
struct A里的成员是结构体指针而b_arry和c_arry是结构体数组的地址。
2. 结构体经过以下传递会不会造成数据的混乱?
比如有一个函数void func (void *arg);
往函数里面传参,如func (&a); (a按照问题1里进行了初始化);
在函数里,是这样对参数进行转换的:
void func (void *arg) {
struct A *p = (struct A *)arg;
}
问题是用p取出里面的数据时发现都错了,但是在func函数外面取出数据都是正确的,我猜想是否因为void *arg的arg保存的是一个单纯的地址,并没有结构信息,所以当对它进行转换的时候它并不能识别里面有数组信息。

3个回答

问题一:
可以这样的。
问题二:
也是可以的,只是不知道你怎么用的p
这样应该可以: p->B就是数组的首地址, p->B[0].id就等于12
你试试吧,应该是可以的。

a353249573
a353249573 谢谢你帮助!
3 年多之前 回复

可以使用联合体(union),把结构体和数组分别作为两个成员,这是最符合C语言语法意图的实现。

struct A {
struct *B;
struct *C;
}; 这样定义结构体是不对的。
请参考这张图片。图片说明
除了这个结构体其他的都没问题。如果还有错误那么可能是你用p的方式不对。
希望能帮到你。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c语言结构体中指针数组怎样赋值
定义一个结构体 struct AS { char *p[1]; }; 怎样用gets函数给指针数组赋值呢?
javafx scene builder中的多个textfield可以通过数组或指针批量赋值吗?
javafx scene builder中的多个textfield可以通过数组或指针批量赋值吗?
向共享内存赋值一个50000INT数组的结构体赋值,内核崩溃问题
创建了一个大型的结构体,里面有许多子结构体,创建成功之后,使用全局指针指向其中一个子结构体,并创建了一个子结构体类型的实例进行,*指针=实例赋值。 如果子结构体中的数组小于2000个,不会崩溃,再大就会崩溃。 个人推测: 1.应该不是指针使用错误吧?毕竟小一点的没有报错崩溃!
结构体的问题定义和赋值问题
在结构体中定义指针就相当于定义数组吗?还有在结构体中可以直接定义数组的话,如果可以的话,那么定义时和使用赋值时,有什么要求吗?
结构体类型的指针初始化和赋值问题
编程的时候我定义了一个结构体,结构体有几个变量的值我必须要赋初值,因为循环得用。 结构体这样定义: typedef struct { BYTE stream_Type; unsigned short PID; unsigned short InfoDescrip; }M_PICE; 用的时候: M_PICE* p_Mpice = NULL; p_Mpice->InfoDescrip = 0; 运行到上一句就报错 Unhandled exception in DVB.exe:0xC0000005:Access Violation
结构体指针的内容赋值相关问题
``` int main() { int a=1; int *b; typedef struct { int no; char nn; }L; L *LL; LL->no=1; printf("%d",LL->no); getch(); return 0; } ``` 这是我写的代码,代码没有报错,为什么运行的时候会溢出呢?
关于keil5中结构体指针作为函数参数,无法赋值的问题
.H文件中定义结构体如下 typedef struct { float Distance; /*!< 用厘米测量传感器的距离*/ GPIO_TypeDef* ECHO_GPIOx; /*!< 指向用于 ECHO port */ uint16_t ECHO_GPIO_Pin; /*!< ECHO Pin */ GPIO_TypeDef* TRIGGER_GPIOx; /*!< 指向用于 TRIGGER port */ uint16_t TRIGGER_GPIO_Pin; /*!< TRIG Pin */ } TM_HCSR04_t; 函数申明如下: uint8_t HCSR04_Init( TM_HCSR04_t *HCSR04 , GPIO_TypeDef* ECHO_GPIOx, uint16_t ECHO_GPIO_Pin, GPIO_TypeDef* TRIGGER_GPIOx, uint16_t TRIGGER_GPIO_Pin); float HCSR04_Read(TM_HCSR04_t *HCSR04); 主函数如下: int main(void) { float result=0; TM_HCSR04_t *HCSR04_1; //定义结构体指针 HCSR04_Init(HCSR04_1,echo_gpio,echo_pin,trig_gpio,trig_pin);//初始化赋值 for(;;) { result=HCSR04_Read( HCSR04_1 ); //读值 printf( "length is %f",result ); } } 编译无错误,就是TM_HCSR04_Init函数中结构体指针作为函数参数无法赋值,如有知晓者,还望不吝赐教,C币不足,万分bao'qian
C语言新手在指针(数组)方面遇到的一些问题
![图片说明](https://img-ask.csdn.net/upload/202002/15/1581765888_977519.png) 在主函数中对一个数组赋值可以这样操作:a[10]={0,0,0,0,0,0,0,0,0,0}; 但为什么在int *get(int *p,int *b, int n)函数中无法这样直接赋值(会显示初始值设置项值太多),是不是因为*b这个指针变量只能存放数组的首地址。 但如果是这个原因的话,为什么用for循环的方法却可以正常赋值,for循环方法不也是在数组中赋值吗
c++结构体数组赋值问题
使用getline把处理的数据输出到txt文档中,变成如下格式: 搜索 www.baidu.com 搜索 www.goole.com 电商 www.baidu.com . . 现在要用结构体数组存储, typedef struct tagMember { char *name; char *group; }; struct tagMember url[20]; 然后我读取生成的txt文件后出现内存报错,也不懂赋值,求大神解惑。 代码如下,我是学java的,C++的指针和结构体迷迷糊糊的 ``` #include <atlstr.h> #include <winbase.h> #include <algorithm> #include <iostream> #include <string> #include <list> #include <fstream> #include <vector> #include <cstring> #include <io.h> #include <set> using namespace std; typedef struct tagMember { char *name; char *group; }; tagMember url[500]; void GetLineAndPrint(string in_name) { //string tname; ifstream fin(in_name); int l = in_name.size(); string tname(in_name.substr(0,l-4)); //int pos = in_name.find('.'); //if(pos>0) //tname = in_name.left(pos); int pos1 = tname.find_last_of('\\'); string fname(tname.substr(pos1+1)); //ofstream fout("1.txt",ios::app); //typedef set<string> set_t; //set_t s; if(!fin) { cerr<<"open file error"<<endl; exit(-1); } string str; int i=0; while(getline(fin,str)) { char * ss = new char[str.length()];//申请空间 char * tt = new char[str.length()]; strcpy(ss,(char *)str.data());//赋值 strcpy(tt,(char *)fname.data()); url[i].name=ss; url[i].group=tt; i++; //s.insert(str); //t.insert(name); //cout<<name<<' '<<str<<endl; } //for(set_t::const_iterator p = s.cbegin();p!=s.cend();++p) //{ // //set_t t; // cout<<*p<<' '<<name<<endl; //} } typedef list<char*> ListType; typedef struct ListNode { char* groupName; ListType *next; }NodeType; typedef list<NodeType*> myList; typedef myList::iterator myIter; myIter myFind(myList& mylist, char* dest) { myIter it; for (it=mylist.begin(); it != mylist.end(); it++) { if( (*it)->groupName == dest) return it; } return it; } int main() { struct _finddata_t fileinfo; string in_path; string in_name; cin>>in_path; string curr = in_path+"\\*.txt"; long handle; if((handle=_findfirst(curr.c_str(),&fileinfo))==-1L) { cout<<"没有找到匹配文件!"<<endl; system("pause"); return 0; } else { in_name = in_path + "\\" + fileinfo.name ; GetLineAndPrint(in_name); while(!(_findnext(handle,&fileinfo))) { in_name = in_path + "\\" +fileinfo.name; GetLineAndPrint(in_name); } _findclose(handle); } myList classInfo; NodeType* pNode; //插入节点 for(size_t i=0; i<5; i++) { //创建一个索引节点 myIter it = myFind(classInfo, url[i].group); if( it!= classInfo.end() ) //已存在 { //存储name (*it)->next->push_back( url[i].name ); } else //创建新的NodeType节点 { pNode = new NodeType; pNode->groupName = url[i].group; pNode->next = new ListType; //创建list //存储当前的name pNode->next->push_back( url[i].name ); classInfo.push_back( pNode ); } } //输出: for (myIter it=classInfo.begin(); it != classInfo.end(); it++) { cout << (*it)->groupName << ": "; for ( ListType::iterator bg=(*it)->next->begin(); bg != (*it)->next->end(); bg++ ) { cout << (*bg) << "\t"; } cout << endl; } system("pause"); return 0; } ``` 可能我刚才说的不清楚,我是读取目录下的所有txt文件,每个.txt文件本身文件名是“搜索网站”或是“购物网站”等等。内容是 www.baidu.com www.goole.com www.baidu.com . . 这样的, 比如baidu可能出现在搜索网站.txt中,也可能出现在卖假药.txt中,而我最终目标输出是变成 www.baidu.com 搜索网站 卖假药网站 www.goole.com 搜索网站 . . 这种输出。
结构体指针成员变量在赋值后被篡改了是怎么回事?
结构体指针地址没变,值被篡改了什么情况,有没有大神知道啊 // ConsoleApplication1.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "iostream" #include "string.h" using namespace std; struct STU_LIST { char name[40]; int num; char sex[4]; int clas; struct STU_LIST *nex; }; /******************************************************************************************************************/ /*------------------------------------ -----数字提取------------ ---------------------------------------------*/ /******************************************************************************************************************/ int strEint(const char *str) { int len = strlen(str),i,num; char *tepnum,*tep; tepnum = new char[40]; tep=tepnum; i=len-1; *(tepnum+len) = '\0'; while (i>=0) { if (*(str+i)>='0'&&*(str+i)<='9') { *(tepnum+i)=*(str+i); } else { tepnum=tepnum+i+1; i=0; } i--; } num = atoi(tepnum); delete[] tep; return num; } struct STU_LIST *STU_insirt(struct STU_LIST *head,int n); struct STU_LIST *PRESENT_class; /******************************************************************************************************************/ /*------------------------------------ -----主程序------------ -------------------------------------------------*/ /******************************************************************************************************************/ int _tmain(int argc, _TCHAR* argv[]) { char *comad; int lep = -1; bool state = true,create_sign = false; comad = new char; cout<<"欢迎使用学生名单录入工具,请输入命令命令进行操作。\n输入help查询可用命令。"<<endl; PRESENT_class = new struct STU_LIST; PRESENT_class->clas = 10; PRESENT_class->num = 0; PRESENT_class->nex = NULL; while (state) { cin>>comad; int nums; struct STU_LIST *temp; nums = strEint(comad); if (nums <= 0) { cout<<"您的操作命令缺少有效参数或参数类型有误!!!"<<endl; cout<<"您可以输入help来查询可用操作命令,及使用格式和方法。"<<endl; } else { if(PRESENT_class != NULL) { temp = STU_insirt(PRESENT_class,nums); cout<<"temp->nex->"<<static_cast<const void *>(temp->nex)<<endl; cout<<"temp->nex->num->"<<static_cast<const void *>(&temp->nex->num)<<endl; cout<<temp->clas<<"班"<<temp->name<<"的信息记录已添加。"<<endl; if (temp->nex == NULL) { cout<<"本节点是尾结点"<<endl; } else { cout<<"头节点的学号是"<<temp->num<<endl; cout<<"第二个节点的学号是"<<temp->nex->num<<endl; } } else { cout<<"您要往哪个班级添加学生信息,请在添加信息前先选择一个班级的登记表。"<<endl; cout<<"您可以输入help来查询可用操作命令,及使用格式和方法。"<<endl; } } if (strstr(comad,"exit")!=NULL) { state = false; } } return 0; } /******************************************************************************************************************/ /*-----------------------------------------插入学生条目-----------------------------------------------------------*/ /******************************************************************************************************************/ struct STU_LIST *STU_insirt(struct STU_LIST *head,int n) { struct STU_LIST *temp,*stp1,*lastsp; temp = head; lastsp = NULL; bool sign = true; while (sign) { cout<<"当前节点学号是"<<temp->num<<endl; if(temp->num >= n) //假如要插入的学号不大于当前节点学号 { if(temp->num > n ) //假如要插入的学号小于当前节点学号,那么在当前节点前面创建新节点并录入学生数据 { stp1=(struct STU_LIST*) alloca(sizeof(struct STU_LIST)); stp1->num = n; stp1->clas = head->clas; cout<<"请输入学生姓名:"; cin >>stp1->name; cout<<"请输入学生性别:"; cin >>stp1->sex; stp1->nex = temp; if(temp == head ) //假如当前节点是头结点,那么设置新节点为表头 { head = stp1; sign = false; } else //假如当前节点不是头结点,将上一个节点的指针指向新节点,跳出循环结束命令 { lastsp->nex = stp1; sign = false; } } else //假如要插入的学号等于当前节点学号,那么更新该节点学生数据。 { cout<<"请输入学生姓名:"; cin >>temp->name; cout<<"请输入学生性别:"; cin >>temp->sex; sign = false; } } else //假如要插入的学号大于当前节点学号 { cout<<"要插入的节点大于当前节点"<<endl; if(temp->num == 0) //假如当前节点学号等于0,意味着当前节点没有录入过数据,那么将本节点作为插入的节点录入学生数据。 { temp->num = n; cout<<"请输入学生姓名:"; cin >>temp->name; cout<<"请输入学生性别:"; cin >>temp->sex; temp->nex = NULL; sign = false; } else //假如当前节点的学号不等于0。 { if(temp->nex == NULL) //假如当前节点是尾结点,那么在当前节点之后创建新节点 { stp1 = (struct STU_LIST*) alloca(sizeof(struct STU_LIST)); cout<<"stp1 -> "<<static_cast<const void *>(stp1)<<endl; stp1->num = n; cout<<"新节点的学号是"<<stp1->num<<endl; stp1->clas = head->clas; stp1->nex = NULL; cout<<"请输入学生姓名:"; cin >>stp1->name; cout<<"请输入学生性别:"; cin >>stp1->sex; temp->nex = stp1; cout<<"temp->nex->num="<<temp->nex->num<<endl; cout<<"temp->nex->num->"<<static_cast<const void *>(&temp->nex->num)<<endl; sign = false; } else //假如当前节点不是尾结点,那么将当前节点设置为下个节点 { lastsp = temp; temp = temp->nex; } } } } if(head->nex != NULL) { cout<<"head->nex->num="<<head->nex->num<<endl; cout<<"head->nex->num->"<<static_cast<const void *>(&head->nex->num)<<endl; } return head; } ![图片说明](https://img-ask.csdn.net/upload/201912/28/1577541877_870062.png) 在函数内部时候值不变,一出函数内存里的值就变了这是什么道理。
C/C++ 指针数组赋值问题
有两个指针数组,char *A[10] , char * B[10]; 首先: memcpy(A,B,10); 然后调用一个函数,其形参是一个指针数组,在这个函数里面是用strtok函数对字符串进行分割,比如传入的是A。为什么这个函数执行完了之后,B中保存的数据怎么不是函数执行前的数据呢。 有什么方法能够使执行完函数之后,B中保存的数据还是执行前的数据? 谢谢,,个位大神了!!帮帮忙!
在给结构体成员赋值的时候,函数参数只能使用指针么?
我尝试不用指针,用结构类型变量作为函数参数,就是修改的图中的fill函数的参数,结果报错说 主函数定义的结构体变量(即c)未初始化![图片](https://img-ask.csdn.net/upload/201508/17/1439780000_703130.png)![图片](https://img-ask.csdn.net/upload/201508/17/1439779956_897714.png)
结构体的函数的指针问题
我在a.h中定义了结构体 typedef struct link_t{ int data; struct link_t* prior; struct link_t* next; }Node_t,Link_t; typedef struct{ void (*destory_link)(Link_t *head); link_t* (*creat_link)(int length); Node_t* (*delete_node)(Node_t *node); Node_t* (*add_node)(Node_t* node,int Pdata); link_t* (*merge_link)(Link_t *head1,Link_t *head2); }link_funs; 在a.c中赋值 const link_funs double_link = { .creat_link = _creat, .merge_link = _merge, .add_node = _add, .delete_node = _delete, .destory_link = _destoryLink }; 在B.c中define #define creat_link(num) double_link.creat_link(num) #define add_node(node) double_link.add_node(node) #define delete_node(node) double_link.delete_node(node) #define destory_link(head) double_link.destory_link(head) #define merge_link(head1,head2) double_link.merge_link(head1,head2) 在工程中只有double_link.destory_link(head)函数指向了定义的结构体。结果我观察发现。结构体中只有destory_link这个函数指针所指的函数的返回值是非指针的。其他几个的返回值都是指针类型的。故其他几个函数连接不上,不可使用。这是怎么回事?
求大神~~ c free()结构体指针出错
本人菜鸟一枚,调试程序时发现下面的程序只要用free()来释放结构体指针就出错,百思不得其解,望大师指正!非常感谢啦! 注:本人用的是VC6.0。自己写的C程序,私心揣测难道是结构体指针特殊一点,或者我释放的方式不对~ 补充:C-Free 5.0上选择mingw5调试则没有问题!到底哪里有问题? ![图片说明](https://img-ask.csdn.net/upload/201604/15/1460689437_553769.jpg) ``` #include <stdio.h> #include <stdlib.h> #include <malloc.h> struct Particle{ int age; double money; double famly[4]; };//定义一个结构体变量 int main() { int PM=5,i,j; double *ptr=(double *)calloc(PM,sizeof(double)); struct Particle *swarm=(struct Particle *)calloc(PM,sizeof(struct Particle)); if(swarm==NULL) {printf("给swarm申请内存失败!\n"); exit(1);//异常退出 } else printf("给swarm申请内存成功!\n"); for(i=0;i<PM;i++,swarm++) //对结构体指针赋值并输出 { swarm->age=2*i; swarm->money=3*i+0.55; printf("swarm[%d]: age=%d,money=%lf ",i,swarm->age,swarm->money); for(j=0;j<4;j++) {swarm->famly[j]=1.5*j;printf("%lf ,",swarm->famly[j]);} printf("\n"); } printf("\n");//对double型数组赋值并输出 for(i=0;i<PM;i++) printf("%lf\n",ptr[i]+i*0.5); printf("\n"); free(ptr);ptr=0; //free(swarm);swarm=NULL; //为什么上面语句一添加程序运行就出问题呢??!!而free(ptr)就没问题? printf("\n\n"); } ```
数据结构指针问题赋值问题
LNode *p=A->next *p不是一个指针啊,为什么A->next可以赋值给它。 这和LNode *p; p=A->next;作用是否相同
c语言指针问题和函数调用吧
主函数定义一个指向结构体的指针,调用函数,如果函数的参数也是指向该结构体的指针,为什么不能修改主函数里指针内存中的内容。而如果我参数是一个结构体指针的引用,就可以修改。 按说参数是指针,指针对指针赋值,不是把地址赋了吗?
scanf函数给结构体中指针变量赋值出现段错误
#include<stdio.h> #include<stdlib.h> struct book{ char *name; int num; }; int main() { struct book *bk; bk = (struct book*)malloc(sizeof(struct book)); if(!bk) { printf("no space for malloc\n"); return 0; } scanf("%s",bk->name); /*此处显示:段错误*/ printf("%s\n",bk->name); free(bk); return 0; }
c++关于数组指针赋值问题
这段赋值语句 下面这段语句是错的 void setArc(char start, char end) { int i; for(i=0;i<Vexnum;i++) { if(vex[i].ch == start) { while(vex[i].next) { vex[i] = *vex[i].next; } ArcNode *nNode = new ArcNode; nNode->ch = end; vex[i].next = nNode; } } } 我改了一下,变成下面这段语句,为什么执行不会出问题? void setArc(char start, char end) { int i; for(i=0;i<Vexnum;i++) { if(vex[i].ch == start) { ArcNode *thisnode = &vex[i]; while(thisnode->next) { thisnode = thisnode->next; } ArcNode *nNode = new ArcNode; nNode->ch = end; thisnode->next = nNode; } } } 源代码 #include<iostream> using namespace std; #define Max 100 class ArcNode{ public: ArcNode *next; char ch; ArcNode() { next = NULL; } }; class List{ private: int Bownum; int Vexnum; ArcNode *vex; public: List(int n, int k) { Vexnum = n; Bownum = k; vex = new ArcNode[Vexnum]; ArcNode *spare = new ArcNode(); int i; for(i=0;i<n;i++) vex[i].ch = 'A'+i; } void setArc(char start, char end) { int i; for(i=0;i<Vexnum;i++) { if(vex[i].ch == start) { ArcNode *thisnode = &vex[i]; while(thisnode->next) { thisnode = thisnode->next; } ArcNode *nNode = new ArcNode; nNode->ch = end; thisnode->next = nNode; } } } void display() { int i; for(i=0;i<Vexnum;i++) { cout<<i<<' '; cout<<vex[i].ch<<'-'; ArcNode *tNode = &vex[i]; tNode = tNode->next; while(tNode) { cout<<tNode->ch-'A'<<'-'; tNode = tNode->next; } cout<<'^'<<endl; } } }; int main() { int t; cin>>t; while(t--) { int n, k; cin>>n>>k; List mylist(n, k); while(k--) { char ch1, ch2; cin>>ch1>>ch2; mylist.setArc(ch1, ch2); } mylist.display(); } return 0; }
定义一个指针数组,这个数组名也是字符常量么,但为什么可以被另外一个数组名赋值?
例如: int x[4][3] ={0}; int (* p)[3] ; //这里p是一个以指针为元素的数组的数组名吧。。。 p = x ; //为什么可以执行这步操作
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...
2019年还剩1天,我从外包公司离职了
这日子过的可真快啊,2019年还剩1天,外包公司干了不到3个月,我离职了
《面试宝典》2019年springmvc面试高频题(java)
前言 2019即将过去,伴随我们即将迎来的又是新的一年,过完春节,马上又要迎来新的金三银四面试季。那么,作为程序猿的你,是否真的有所准备的呢,亦或是安于本职工作,继续做好手头上的事情。 当然,不论选择如何,假如你真的准备在之后的金三银四跳槽的话,那么作为一个Java工程师,就不可不看了。如何在几个月的时间里,快速的为即将到来的面试进行充分的准备呢? 1、什么是Spring MVC ?简单...
计算机网络的核心概念
这是《计算机网络》系列文章的第二篇文章 我们第一篇文章讲述了计算机网络的基本概念,互联网的基本名词,什么是协议以及几种接入网以及网络传输的物理媒体,那么本篇文章我们来探讨一下网络核心、交换网络、时延、丢包、吞吐量以及计算机网络的协议层次和网络攻击。 网络核心 网络的核心是由因特网端系统和链路构成的网状网络,下面这幅图正确的表达了这一点 那么在不同的 ISP 和本地以及家庭网络是如何交换信息的呢?...
python自动下载图片
近日闲来无事,总有一种无形的力量萦绕在朕身边,让朕精神涣散,昏昏欲睡。 可是,像朕这么有职业操守的社畜怎么能在上班期间睡瞌睡呢,我不禁陷入了沉思。。。。 突然旁边的IOS同事问:‘嘿,兄弟,我发现一个网站的图片很有意思啊,能不能帮我保存下来提升我的开发灵感?’ 作为一个坚强的社畜怎么能说自己不行呢,当时朕就不假思索的答应:‘oh, It’s simple. Wait for me a few
一名大专同学的四个问题
【前言】   收到一封来信,赶上各种事情拖了几日,利用今天要放下工作的时机,做个回复。   2020年到了,就以这一封信,作为开年标志吧。 【正文】   您好,我是一名现在有很多困惑的大二学生。有一些问题想要向您请教。   先说一下我的基本情况,高考失利,不想复读,来到广州一所大专读计算机应用技术专业。学校是偏艺术类的,计算机专业没有实验室更不用说工作室了。而且学校的学风也不好。但我很想在计算机领...
复习一周,京东+百度一面,不小心都拿了Offer
京东和百度一面都问了啥,面试官百般刁难,可惜我全会。
20道你必须要背会的微服务面试题,面试一定会被问到
写在前面: 在学习springcloud之前大家一定要先了解下,常见的面试题有那块,然后我们带着问题去学习这个微服务技术,那么就会更加理解springcloud技术。如果你已经学了springcloud,那么在准备面试的时候,一定要看看看这些面试题。 文章目录1、什么是微服务?2、微服务之间是如何通讯的?3、springcloud 与dubbo有哪些区别?4、请谈谈对SpringBoot 和S...
Java 14 都快来了,为什么还有这么多人固守Java 8?
从Java 9开始,Java版本的发布就让人眼花缭乱了。每隔6个月,都会冒出一个新版本出来,Java 10 , Java 11, Java 12, Java 13, 到2020年3月份,...
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试一个ArrayList我都能跟面试官扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
2020年1月中国编程语言排行榜,python是2019增长最快编程语言
编程语言比例 排名 编程语言 最低工资 工资中位数 最低工资 最高工资 人头 人头百分比 1 rust 20713 17500 5042 46250 480 0.14% 2 typescript 18503 22500 6000 30000 1821 0.52% 3 lua 18150 17500 5250 35000 2956 0.84% 4 go 17989 16...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
Idea 中最常用的10款插件(提高开发效率),一定要学会使用!
学习使用一些插件,可以提高开发效率。对于我们开发人员很有帮助。这篇博客介绍了开发中使用的插件。
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
立即提问