1 编程基础1.1 基本概念1. 的理解:const char*, char const*, char*const的区别问题几乎是C++面试中每次 都会有的题目。 事实上这个概念谁都有只是三种声明方式非常相似很容易记混。 Bjarne在他的The C++ Programming Language里面给出过一个助记的方法: 把一个声明从右向左读。 constchar * const cp; ( * 读成 pointer to ) cp is a const pointer to char const char * p; p is a pointer to const char; char const * p; 同上因为C++里面没有const*的运算符,所以const只能属于前面的类型。2. 指针cint *p[n];-----指针数组,每个元素均为指向整型数据的指针。int (*)p[n];------p为指向一维数组的指针,这个一维数组有n个整型数据。int *p();----------函数带回指针,指针指向返回的值。int (*)p();------p为指向函数的指针。3. 数组越界问题下面这个程序执行后会有什么错误或者效果:#define MAX 255int main(){ unsigned char A[MAX],i; for (i=0;ihigh) return -1; mid=(low+high)/2; if(x==a[mid]) return mid; if(x2解:int f(int n){ int i,s,s1,s2; s1=1;/*s1用于保存f(n-1)的值*/ s2=1;/*s2用于保存f(n-2)的值*/ s=1; for(i=3;ix[j+1].key) { temp=x[j]; x[j]=x[j+1]; x[j+1]=temp; }}}6. 语言 文件读写c#include "stdio.h"main(){ FILE *fp; char ch,filename[10]; scanf("%s",filename); if((fp=fopen(filename,"w")==NULL) {printf("cann't open file/n");exit(0); } ch=getchar(); while(ch!='#') { fputc(ch,fp); putchar(ch); ch=getchar(); } fclose(fp);}7. 编程winsocket#include #include void main(){ WORDwVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD(1,1); err = WSAStartup(wVersionRequested,&wsaData); if( err != 0){ return; } if(LOBYTE( wsaData.wVersion ) != 1|| HIBYTE( wsaData.wVersion) != 1){ WSACleanup(); return; } SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY); addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(6000); bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); listen(sockSrv,5);
SOCKADDR_IN addrClient; int len=sizeof(SOCKADDR); while(1) { SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len); char sendBuf[100]; sprint(sendBuf,"Welcome %s to http://www.yjbys.com/", inet_ntoa(addrClient.sin_addr)); send(sockConn,sendBuf,strlen(sendBuf)+1,0); char recvBuf[100]; recv(sockConn,recvBuf); printf("%s/n",recvBuf); closesocket(sockConn); WSACleanup(); } }注:这是Server端;File->New->Win32 Console Application,工程名:TcpSrv;然后,File->New->C++ Source File,文件名:TcpSrv;在该工程的Setting的Link的Object/library modules项要加入ws2_32.lib#include #include void main(){ WORDwVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD(1,1); err = WSAStartup(wVersionRequested,&wsaData); if( err != 0){ return; } if(LOBYTE( wsaData.wVersion ) != 1|| HIBYTE( wsaData.wVersion) != 1){ WSACleanup(); return; } SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1"); addrSrv.sin_family=AF_INET; addrSrv.sin_porthtons(6000); connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));char recvBuf[100];recv(sockClient,recvBuf,100,0);printf("%s/n",recvBuf);send(sockClient,"This is zhangsan",strlen("This is zhangsan")+1,0); closesocket(sockClient); WSACleanup();}注:这是Client端;File->New->Win32 Console Application,工程名:TcpClient;然后,File->New->C++ Source File,文件名:TcpClient;同理,在该工程的Setting的Link的Object/library modules项要加入ws2_32.lib8. 类的知识C++#include class human{public:human(){ human_num++;};static int human_num;~human(){human_num--;print();}void print(){cout该信息出自应届毕业生求职网YJBYS.COM:http://www.yjbys.com
