测试代码:
#include <iostream>
using namespace std;
int main(){
for(int i = 0; i < 10; i++){
switch(i){
case 0 :
{
int* ptr = new int;
cout << "case 0 :" << endl;
cout <<"赋值前 *ptr = " << *ptr << endl;
cout <<"赋值前 ptr = " << ptr << endl;
*ptr = 8;
cout << "直接赋值后 *ptr = " << *ptr << endl;
cout << "直接赋值后 ptr = " << ptr << endl;
int a = 9;
*ptr = a;
cout << "间接赋值后(1) *ptr = " << *ptr << endl;
cout << "间接赋值后(1) ptr = " << ptr << endl;
int b = 10;
ptr = &b;
cout << "间接赋值后(2) *ptr = " << *ptr << endl;
cout << "间接赋值后(2) ptr = " << ptr << endl;
cout << "sizeof(*ptr) = " << sizeof(*ptr) << endl;
cout << "sizeof(ptr) = " << sizeof(ptr) << endl << endl;
delete ptr;
break;
}
case 1 :
{
int* array = new int[10];
cout << "case 1 :" << endl;
cout << "赋值前 ";
for(int j = 0; j < 10; j++)
cout << "array[" << j << "] = " << array[j] << endl;
cout << endl;
for(int j = 0; j < 10; j++)
array[j] = j + 10;
cout << "赋值后 ";
for(int j = 0; j < 10; j++)
cout << "array[" << j << "] = " << array[j] << endl;
cout << endl;
cout << "sizeof(array[0]) = " << sizeof(array[0]) << endl;
cout << "sizeof(array) = " << sizeof(array) << endl;
delete[] array;
break;
}
default :
break;
}
}
return 0;
}
测试结果:
Debug经验:
1,注意指针本身与指针所指变量之间的区别,加星号*与不加星号的区别;
2,case标号后若涉及到变量定义或赋初值,最好每一段case语句段加上一对花括号{},让程序清晰无误。