C++
赏星乐事
这个作者很懒,什么都没留下…
展开
-
两个变量的值的交换方法
题目描述 如何快速的交换两个变量的值 解法一:使用局部变量temp完成交换 解法二:使用加减运算完成交换 解法三:使用异或运算完成交换code//解法一:使用局部变量temp完成交换void swap1(int &a,int &b){ int temp =a; a = b; b = temp;}//解法二:使用加减运算完成交换void swap2(int &原创 2017-07-12 09:43:48 · 3543 阅读 · 0 评论 -
编程实现strcpy函数
已知strcpy函数的原型是:char * strcpy(char * strDest,const char * strSrc);要求: 1.不要调用库函数,实现strcpy函数。 2.解释为什么要返回char*。 代码:#include char* strcpy(char* strDest,const char *strSrc){ if((strDest=原创 2017-07-17 20:56:00 · 524 阅读 · 0 评论 -
数组越界
不当的循环操作导致数组越界#define MAX 255int main(){ unsigned char A[MAX],i; for(i = 0;i<=MAX;i++) A[i]= i;}i原创 2017-07-17 20:55:40 · 499 阅读 · 0 评论 -
编程实现计算字符串的长度
strcpy库函数的实现细节#include #include int strlen1(const char* src){ assert(NULL!=src); int len = 0; while(*src++!='\0') len++; return len;}int strlen2(const char *src){原创 2017-07-17 20:55:15 · 1060 阅读 · 0 评论 -
编程实现字符串中子串的查找
strstr库函数的实现细节 问题 请写一个函数,实现strstr,即从一个字符串中,查找另一个字符串的位置,如strstr(“12345”,“34”)返回值为2,在2号位置找到字符串34。 代码#include #include const char *strstr(const char *src,const char *sub){ const char *bp;原创 2017-07-17 20:54:48 · 490 阅读 · 0 评论 -
用#define实现宏并求最大值和最小值
解答#define MAX(x,y) ((x)>(y)?(x):(y))#define MIN(x,y) ((x)<(y)?(x):(y))note: 在宏中需要把参数小心地用括号括起来。因为宏只是简单的文本替换,如果不注意,很容易引起歧义。原创 2017-07-15 22:23:38 · 3081 阅读 · 0 评论 -
有符号变量与无符号变量的值的转换
问题#include <stdio.h>char getChar(int x,int y){ char c; unsigned int a = x; (a+y>10)?(c=1):(c=2); return c;}int main(){ char c1 = getChar(7,4); char c2 = getChar(7,3); c原创 2017-07-15 22:17:01 · 1386 阅读 · 0 评论 -
什么是“野指针”
解析 “野指针”不是NULL指针,而是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是“野指针”是很危险的,if语句对它不起作用。“野指针”的成因主要有两种: 指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的默认值是随机的,它会乱指一气,所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。 指针原创 2017-07-15 22:01:04 · 1739 阅读 · 0 评论 -
#pragma pack的作用
问题#include <iostream>#pragma pack(1)struct test{ char c; short s1; short s2; int i;};int main(){ cout<<sizeof(test)<<endl; //9 return 0;}解答 代码用#pragma pack将对齐设为1.由于结构体te原创 2017-07-14 09:44:21 · 345 阅读 · 0 评论 -
头文件引用中<>与“”的区别
问题 头文件引用中<>与“”的区别 解答 尖括号<>表明这个文件是一个工程或标准头文件。查找过程会首先检查预定义的目录,我们可以通过设置搜索路径环境变量或是命令行选项来修改这些目录。 如果文件名用一对括号扩起来,则表明该文件是用户提供的头文件,查找该文件时将从当前文件目录(或文件名指定的其他目录)中寻找文件,然后在标准位置寻找文件。原创 2017-07-14 09:31:03 · 2123 阅读 · 1 评论 -
宏参数的连接
#include <stdio.h>#define STR(s) #s#define CONS(a,b) (int)(a##e##b)int main(){ printf(STR(vck)); //vck printf("\n"); printf("%d\n",CONS(2,3)); //2000 return 0;}程序中,使用了#把宏参数变成为一个原创 2017-07-14 09:22:22 · 717 阅读 · 0 评论 -
一个字的高位和低位字节的获取
问题 如何用宏定义得到一个字的高位和低位字节 代码#define WORD_LD(xxx) ((byte) ((word)(xxx) & 255))#define WORD_HI(xxx) ((byte) ((word)(xxx)>>>8))一个字由两个字节组成。WORD_LD(xxx)取参数xxx的低8位,WORD_LD(xxx)取参数xxx的高8位。原创 2017-07-14 09:14:51 · 7432 阅读 · 0 评论 -
this指针
基本概念 类的非静态成员函数是属于类的对象,含有this指针,而类的static函数属于类自己本身,所以不含this指针。而友元函数是类的好朋友,是非成员函数,也是没有this指针的。#include using namespace stdclass MyClass{public: int data; MyClass(int data)原创 2017-07-13 10:05:45 · 283 阅读 · 0 评论 -
指针数组和数组指针的使用
问题 程序找错or程序结果#include int main(){ char *str[] ={"welcome","to","liaoning","shenyang"}; char **p = str+1; str[0] = (*p++)+2; str[1] = *(p+1); str[2] =p[1]+3; str[3] =p[0] +原创 2017-07-13 09:40:55 · 254 阅读 · 0 评论 -
函数指针和指针函数的区别
问题#include <iostream>using namespace std;int max(int x,int y){ return (x>y?x:y);}float *find(float *p,int x){ return p+x;}int main(){ float score[] = { 10,20,30,40}; int (*p)(i原创 2017-07-13 09:15:23 · 217 阅读 · 0 评论 -
快速排序
快速排序的基本思想: 通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可对这俩部分记录继续进行排序,已达到整个序列有序的目的。 代码:void Quick_Sort(vector<int> &v, int first,int end){ if(first<end) { int key = v[first];原创 2017-07-12 21:44:11 · 165 阅读 · 0 评论 -
i++和++i的区别
#include <stdio.h>int main(){ int i = 8; printf("%d\n",++i); //i =8+1=9, 结果为9 printf("%d\n",--i); //i =9-1=8, 结果为8 printf("%d\n",i++); //i =8+1=9, 结果为8 printf("%d\n",i--); //i=9原创 2017-07-12 10:24:43 · 231 阅读 · 0 评论 -
C++域操作符
#include <stdio.h>int value =1;int main(){ int value = 0; ::value =2;//域操作符::来直接操作全局变量 printf("value = %d\n",value); return 0;}在C中编译器不能通过,并且提示域操作符那一行报错。这是因为C中不支持这个操作符,但是在C++中,程序正确,并且原创 2017-07-12 09:56:35 · 615 阅读 · 0 评论 -
动态内存的传递
可以采用3中办法来解决动态内存不能传递的问题 在C语言中,可以通过采用指向指针的指针解决这个问题,可以把str的地址传给函数GetMemory. 在C++中,多了一种选择,就是传递str指针的引用; 使用函数返回值来传递动态内存; 代码如下:#include using namespace std;void GetMemory(char *p,int num){原创 2017-07-17 20:56:20 · 259 阅读 · 0 评论