c++指针的使用总结——开始菜鸟之路!

来源:互联网 发布:外国人 汉字 知乎 编辑:程序博客网 时间:2024/05/22 18:37

  在C++中,任何变量声明后都应该初始化,包括指针变量。如果不初始化,将产生不可预见的后果。以下程序就会。

#include <iostream>
using namespace std;
int main()
{
   void sort(char * name[], int n);
   void print(char * name[], int n);
   char * name[] = {"BASIC","FORTRAN","C++","PASCAL","COBOL"};
   int n=5;
   sort(name,n);
   print(name,n);
   return 0;
}

void sort(char * name[], int n)
{
 char * temp;
 int i,j,k;
 for(i = 0; i < n-1; i++)
 {
  k = i;
  for(j=i+1; j < n; j++)
          if (strcmp(name[k],name[j]) > 0) k = j;
   if (k != i)
   {

//这里开始三行是问题产生的根源。此处应该改为如下 temp =   name[k];  name[k] =  name[i];    name[i] =   temp; 完成初始化。

//使指针所指向的地址改变
     * temp =  * name[k];
     * name[k] = * name[i];     

     * name[i] =  * temp;
   }
 }
}

void print(char * name[], int n)
{
 int i;
 for(i=0; i < n; i++)
  cout<<name[i]<<" ";
 cout<<endl;
}

原创粉丝点击