C++ 在整数上声明两个指针(VS2012)
当我在整数上声明一个指针时,我的程序工作正常。 但若我声明了另一个指针,当我的程序执行时就会出错 为什么? 我使用VC++11 示例代码:C++ 在整数上声明两个指针(VS2012),c++,visual-studio-2012,C++,Visual Studio 2012,当我在整数上声明一个指针时,我的程序工作正常。 但若我声明了另一个指针,当我的程序执行时就会出错 为什么? 我使用VC++11 示例代码: int main() { int *p_first; int *p_seconds; *p_first = 5; *p_seconds = 6; return 0; } 您需要使指针指向可以写入的内存。您正在取消对未初始化指针的引用,这是一种未定义的行为。您的第一个版本可能“运行良好”,但它仍然是坏的,无法依靠工
int main()
{
int *p_first;
int *p_seconds;
*p_first = 5;
*p_seconds = 6;
return 0;
}
您需要使指针指向可以写入的内存。您正在取消对未初始化指针的引用,这是一种未定义的行为。您的第一个版本可能“运行良好”,但它仍然是坏的,无法依靠工作
int* p_first; // uninitialized pointer.
int i = 41; //
p_first = &i; // p_first now points to location of i
*p_first = 5; // OK
p_first = new int(); // p_first points to dynamically allocated int
*p_first = 5; // OK
delete p_first;
您需要使指针指向可以写入的内存。您正在取消对未初始化指针的引用,这是一种未定义的行为。您的第一个版本可能“运行良好”,但它仍然是坏的,无法依靠工作
int* p_first; // uninitialized pointer.
int i = 41; //
p_first = &i; // p_first now points to location of i
*p_first = 5; // OK
p_first = new int(); // p_first points to dynamically allocated int
*p_first = 5; // OK
delete p_first;
您正在取消对未初始化指针的引用。这是。它第一次起作用是因为您很幸运。您正在取消对未初始化指针的引用。这是。它第一次起作用是因为你很幸运。因为它可以自由地做任何它想做的事-你的程序在取消引用未初始化的指针后有未定义的行为。因为它可以自由地做任何它想做的事-你的程序在取消引用未初始化的指针后有未定义的行为。请注意,你正在尝试取消引用导致未定义行为的未初始化指针。试着这样做:
int *p_first;
int x = 5;
p_first = &x;
请注意,您正试图取消引用导致未定义行为的未初始化指针。试着这样做:
int *p_first;
int x = 5;
p_first = &x;
当你写作时
int a = 3;
int* b = new int(3);
在内存中,您正在创建一个空间,将其称为a
,并将3
的值赋给它
当你写作时
int a = 3;
int* b = new int(3);
您正在创建一个空间b
,该空间指向一个新创建的空间3
当你写作时
int a = 3;
int* b = new int(3);
在内存中,您正在创建一个空间,将其称为a
,并将3
的值赋给它
当你写作时
int a = 3;
int* b = new int(3);
您正在创建一个空间b
,该空间指向一个新创建的空间3