zoukankan      html  css  js  c++  java
  • 指针巩固

     

     

     1 #include <iostream>
     2 using namespace std;
     3 int main()
     4 {
     5     int num = 0;
     6     int* p = &num;
     7     cout << p << "	" << &num << endl;//0x6dfee8        0x6dfee8
     8     cout << *p << "	" << num << endl;//0       0
     9     return 0;
    10 }
     1 #include <iostream>
     2 using namespace std;
     3 int main()
     4 {
     5     int num = 0;
     6     int* p = &num;
     7     cout << p << "	" << &num << endl;//0x6dfee8        0x6dfee8
     8     cout << *p << "	" << num << endl;//0       0
     9 
    10     char ch = 'd';
    11     char* p_ch =&ch;
    12     //char* 使p_ch会被当成字符串指针打印
    13     cout << p_ch << "	" << *p_ch << endl;//d       d
    14     cout << (void*)p_ch << "	" << *p_ch << endl;//0x6dfee3        d
    15     return 0;
    16 }

    关于void*的一个详细介绍

     关于空指针和空类型指针和野指针的介绍

      

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int main()
     4 {
     5     int a = 10;
     6     int &b = a;
     7     cout << b << a << endl;//1010
     8     //int &c=10;//报错,引用对象不可以赋值为一个常数。
     9     const int &d = 10;
    10     cout << d << endl;//10
    11     //加上const是常量引用,不加是变量引用
    12     //引用相比于指针安全,所以推荐使用引用
    13     return 0;
    14 }

     引用变量和原来的变量指向的内存空间一致。

    数组名确实是数组的首地址,但是在sizeof(array)下是数组类型,大小是数组所占内存大小

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int main()
     4 {
     5     int num[4] = {1,2,5,4};
     6     int *p_a = num;
     7     int *p_b = &num[0];
     8     cout << p_a[0] << "---" << p_b[1] << endl;
     9     cout << *(++p_a) << "---" << *(p_b + 1) << endl;//*++num是不对的,不可以对数组名进行加减
    10     
    11     return 0;
    12 }

        

      

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int main()
     4 {
     5     int num[5];
     6     int *nums = new int[5];
     7     cout << sizeof(num) << '	' << sizeof(nums) << endl;//20      4
     8     //一个是数组,一个是变量。
     9 
    10     delete [] nums;
    11     nums = nullptr;//指向空指针,否则就成为野指针。容易内存泄漏
    12     int* ptr = new int;
    13     delete ptr;
    14     ptr = nullptr;
    15     return 0;
    16 }

     

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int main()
     4 {
     5     int (*p)[3] = new int[3][3];
     6     p[1][1]=987;
     7     for(int i = 0;i < 3; i++){
     8         for(int j = 0;j< 3; j++){
     9             cout << p[i][j] <<"=="<< *(*(p+i)+j) << " || ";//两种输出方法
    10         }
    11         cout << endl;
    12     }
    13     return 0;
    14 }
  • 相关阅读:
    Flume应用场景及架构原理
    遍历Map的四种方法
    zookeeper集群某个follower启动失败
    HDFS 和YARN HA 简介
    cdh集群数据恢复
    原!总结 quartz集群 定时任务 测试运行ok
    原!!junit mockito 自定义参数匹配 -- ArgumentMatcher
    log4j 日志相关
    转!!SQL左右连接中的on and和on where的区别
    转!!java泛型
  • 原文地址:https://www.cnblogs.com/henuliulei/p/11673222.html
Copyright © 2011-2022 走看看