顾小败吧 关注:4贴子:411
以后写的代码会贴到这里


IP属地:广东1楼2018-01-24 13:07回复
    专门整理了一个文件夹放代码
    就不贴到这里了
    此贴谈谈心得吧


    IP属地:广东3楼2018-02-12 20:04
    回复
      a^=b;b^=a;a^=b;
      这是在交换a,b的内容,相当于:
      c = a; a = b; b = c;
      但是这种方式是不会引入第三个变量。切^运算最快。
      常见的不引入第三个变量交换a b的方法还有:
      a = a + b; b = a - b; a = a - b;
      a ^= b;
      相当于 a = a ^ b;
      同理a = a + b一般写成 a += b;
      ^运算,是将a b相应二进制位做位异或运算;
      两个数a ,b,做^运算得到c, a b c之间有一个关系:就是任意两个做^运算都会得到第三个。
      这也是能实现交换的原因.
      ^运算定义,位相同为0不同为1;
      比如1 ^1 = 0, 0 ^ 0 = 0;
      1 ^0 = 1, 0 ^ 1 = 1;
      每一个等式中可以看出来上述的abc关系。两个得到第三个。
      https://zhidao.baidu.com/question/648184192735750645.html?qbl=relate_question_0&word=%5E%3D


      IP属地:广东5楼2018-02-12 21:28
      回复
        交换函数swap的三种实现方法:
        ①借助辅助变量temp的swap函数②采用加减法的swap函数 ③使用异或运算的swap函数。
        一、借助辅助变量temp的swap函数
        1)引用类型形参
        void swap(int &a, int &b) //引用类型方式
        {
        int temp; //辅助变量
        temp = a;
        a = b;
        b = temp;
        }
        2)指针类型形参
        void swap(int *a, int *b)
        {
        int temp;
        temp = *a;
        *a = *b;
        *b = temp;
        }
        二、采用加减法的swap函数
        void swap(int &a, int &b)
        {
        a = a + b;
        b = a - b;
        a = a - b;
        }
        三、使用异或运算的swap函数
        void swap(int &a, int &b)
        {
        a = a ^ b;
        b = a ^ b;
        a = a ^ b;
        }
        【摘自博客】http://blog.csdn.net/garfielder007/article/details/48314295
        刚才又看到了第四种方法,妙啊!
        四、 a = a+b-(b=a);
        【见】http://www.jb51.net/article/34240.htm


        IP属地:广东7楼2018-02-12 21:41
        回复
          形参与实参的概念及swap函数
          http://www.cnblogs.com/Zhang-Shangyu/p/5274369.html


          IP属地:广东8楼2018-02-12 22:55
          回复
            #include <stdio.h>
            void swap(int * a1, int * b1);
            int main()
            {
            int a=0,b=1;
            swap(&a , &b); //传递的是实参的地址
            printf("a=%d , b= %d\n",a,b);
            }
            void swap(int * a1, int * b1)
            {
            int temp = *a1;
            *a1 = *b1;
            *b1 = temp;
            }
            想要交换a,b的值,其实就是相当于要在函数中改变变量的值,要做到这一点,就需要向形式参数传递实际参数的地址了,因为这样把变量的地址复制到函数中的变量里,它们指向的是内存中的同一个地方,在函数中改变这个地方的值,那么外部的变量的值也就改变了。


            IP属地:广东9楼2018-02-12 22:56
            收起回复
              C++引用
              引用引入了对象的一个同义词。定义引用的表示方法与定义指针相似,只是用&代替了*。引用(reference)是c++对c语言的重要扩充。引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。引用的声明方法:类型标识符 &引用名=目标变量名;


              IP属地:广东10楼2018-02-12 23:27
              收起回复
                指针数组和数组指针
                指针数组:指针数组可以说成是”指针的数组”,首先这个变量是一个数组,其次,”指针”修饰这个数组,意思是说这个数组的所有元素都是指针类型,在32位系统中,指针占四个字节。
                数组指针:数组指针可以说成是”数组的指针”,首先这个变量是一个指针,其次,”数组”修饰这个指针,意思是说这个指针存放着一个数组的首地址,或者说这个指针指向一个数组的首地址。
                http://blog.csdn.net/kulala082/article/details/53407712
                http://blog.csdn.net/sum_tw/article/details/53540866


                IP属地:广东11楼2018-02-13 13:51
                回复
                  对于const类型和&引用类型数据成员,其初始化必须在初始化阶段完成。


                  IP属地:广东12楼2018-02-13 18:05
                  回复
                    malloc与new
                    第一、malloc 函数返回的是 void * 类型。
                    第二、函数的实参为 sizeof(int) ,用于指明一个整型数据需要的大小。
                    malloc函数用于申请一块连续的指定大小的内存块区域以void*类型返回分配的内存区域地址,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存。void* 类型表示未确定类型的指针。C,C++规定,void* 类型可以通过类型转换强制转换为任何其它类型的指针。一般需和free函数配对使用。
                    https://baike.baidu.com/item/malloc函数/8582146?fr=aladdin&fromid=659960&fromtitle=malloc


                    IP属地:广东14楼2018-02-13 21:53
                    收起回复
                      >是C语言和C++语言的一个运算符,叫做指向结构体成员运算符,用处是使用一个指向结构体或对象的指针访问其内成员。
                      >是一个整体,它是用于指向结构体、C++中的class等含有子数据的指针用来取子数据。换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”。
                      举个例子:
                      struct Data
                      {
                      int a,b,c;
                      }; //定义结构体
                      struct Data * p; //定义结构体指针
                      struct Data A = {1,2,3}; //声明变量A
                      int x; //声明一个变量x
                      p = &A ; //指向A
                      x = p->a; //将p所指向的结构体中包含的数据项a赋值给x
                      //由于此时p指向A,因而 p->a == A.a,也就是1
                      https://zhidao.baidu.com/question/143562807.html
                      关于链表的比喻也讲的不错


                      IP属地:广东15楼2018-02-13 22:03
                      收起回复
                        memset
                        memset是计算机中C/C++语言函数。将s所指向的某一块内存中的前n个 字节的内容全部设置为ch指定的ASCII值, 第一个值为指定的内存地址,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向s的指针。
                        void *memset(void *s, int ch, size_t n);
                        函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。
                        memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法 。
                        https://baike.baidu.com/item/memset/4747579?fr=aladdin


                        IP属地:广东16楼2018-02-13 22:19
                        回复
                          char **ppc = new char*[5]{NULL}; //指针数组
                          ppc[0] = "china";
                          ppc[1] = "greatWall";
                          ppc[2] = "automan";
                          while(*ppc)
                          {
                          cout<<*ppc++<<endl;
                          }
                          这边的*ppc++,按优先级是*(ppc++),但由于是后加加,所以先输出*ppc,再ppc++。


                          IP属地:广东17楼2018-02-14 16:03
                          回复
                            for循环中的 for(int i=0;i<5;i++) 这个 i 的生存期仅仅在for循环里。
                            C++语法允许变量定义在for循环控制表达式中,而且其作用域仅限于for循环语句中,这样你可以在多个for中都使用同名的变量(比如 i ),而不用担心它们互相影响。


                            IP属地:广东18楼2018-02-14 16:18
                            回复
                              fgets函数
                              从文件结构体指针stream中读取数据,每次读取一行。读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋'\0'),如果文件中的该行,不足bufsize个字符,则读完该行就结束。如若该行(包括最后一个换行符)的字符数超过bufsize-1,则fgets只返回一个不完整的行,但是,缓冲区总是以NULL字符结尾,对fgets的下一次调用会继续读该行。函数成功将返回buf,失败或读到文件结尾返回NULL。因此我们不能直接通过fgets的返回值来判断函数是否是出错而终止的,应该借助feof函数或者ferror函数来判断。
                              https://baike.baidu.com/item/fgets/10942211?fr=aladdin


                              IP属地:广东19楼2018-02-16 21:41
                              回复