欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C++指针→指针常见错误

程序员文章站 2022-06-20 09:37:06
下面的程序会发生崩溃: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 include include using namespace std; int main(void) { int p; int i = ......
  1. 下面的程序会发生崩溃:
    1.  1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      #include <stdio.h>
      #include <iostream>
      
      using namespace std;
      
      int main(void)
      {
          int *p;
          int i = 5;
      
          *p = i;
          printf("%d\n", *p);
      
          return 0;
      }
  2. 原因如下:
    1. 变量的本质是内存中分配一段存储空间
    2. p由于没有指向,因此内部是个垃圾值,使用*p很可能访问了并没有给程序分配的存储空间
  3. 解决方法:提示:有2种

指针指向静态内存 指针指向动态内存
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#include <stdio.h>
#include <iostream>

using namespace std;

int main(void)
{
    int *p;
    int i = 5;

    p = &i;
    printf("%d\n", *p);

    return 0;
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#include <stdio.h>
#include <iostream>

using namespace std;

int main(void)
{
    int *p = new int;
    int i = 5;

    *p = i;
    printf("%d\n", *p);

    return 0;
}