void test1()
{
 char string[10];
 char* str1 = "0123456789";
 strcpy( string, str1 );
}void test2()
{
 char string[10], str1[10];
 int i;
 for(i=0; i<10; i++)
 {
  str1[i] = 'a';
 }
 strcpy( string, str1 );
}void test3(char* str1)
{
 char string[10];
 if( strlen( str1 ) <= 10 )
 {
  strcpy( string, str1 );
 }
}void strcpy( char *strDest, char *strSrc )
{
  while( (*strDest++ = * strSrc++) != ‘/0’ );
}void strcpy( char *strDest, const char *strSrc ) 
//將源字符串加const,表明其為輸入參數,加2分
{
  while( (*strDest++ = * strSrc++) != ‘/0’ );
}void strcpy(char *strDest, const char *strSrc) 
{
 //對源地址和目的地址加非0斷言,加3分
 assert( (strDest != NULL) && (strSrc != NULL) );
 while( (*strDest++ = * strSrc++) != ‘/0’ );
}//為了實現鏈式操作,將目的地址返回,加3分!
char * strcpy( char *strDest, const char *strSrc ) 
{
 assert( (strDest != NULL) && (strSrc != NULL) );
 char *address = strDest; 
 while( (*strDest++ = * strSrc++) != ‘/0’ ); 
  return address;
}{
 assert( strt != NULL ); //斷言字符串地址非0
 int len;
 while( (*str++) != '/0' ) 
 { 
  len++; 
 } 
 return len;
}void GetMemory( char *p )
{
 p = (char *) malloc( 100 );
}
void Test( void ) 
{
 char *str = NULL;
 GetMemory( str ); 
 strcpy( str, "hello world" );
 PRintf( str );
}char *GetMemory( void )
{ 
 char p[] = "hello world"; 
 return p; 
}
void Test( void )
{ 
 char *str = NULL; 
 str = GetMemory(); 
 printf( str ); 
}void GetMemory( char **p, int num )
{
 *p = (char *) malloc( num );
}
void Test( void )
{
 char *str = NULL;
 GetMemory( &str, 100 );
 strcpy( str, "hello" ); 
 printf( str ); 
}void Test( void )
{
 char *str = (char *) malloc( 100 );
 strcpy( str, "hello" );
 free( str ); 
 ... //省略的其它語句
}char *str = NULL;
GetMemory( str ); char p[] = "hello world"; 
return p; *p = (char *) malloc( num );if ( *p == NULL )
{
 ...//進行申請內存失敗處理
}char *str = (char *) malloc(100);str = NULL;swap( int* p1,int* p2 )
{
 int *p;
 *p = *p1;
 *p1 = *p2;
 *p2 = *p;
}swap( int* p1,int* p2 )
{
 int p;
 p = *p1;
 *p1 = *p2;
 *p2 = p;
}      3.內功題void Func ( char str[100] )
{
 sizeof( str ) = ?
}
void *p = malloc( 100 );
sizeof ( p ) = ?sizeof( str ) = 4
sizeof ( p ) = 4char str[10];
cout << sizeof(str) << endl;char str[10]; 
str++; //編譯出錯,提示str不是左值 least = MIN(*p++, b);#define MIN(A,B) ((A) <= (B) ? (A) : (B))#define MIN(A,B) (A) <= (B) ? (A) : (B)
#define MIN(A,B) (A <= B ? A : B )#define MIN(A,B) ((A) <= (B) ? (A) : (B)); #ifndef __INCvxWorksh
#define __INCvxWorksh 
#ifdef __cplusplus
extern "C" {
#endif 
/*...*/ 
#ifdef __cplusplus
}
#endif 
#endif /* __INCvxWorksh */#ifndef __INCvxWorksh
#define __INCvxWorksh
#endif void foo(int x, int y);//pStr是指向以'/0'結尾的字符串的指針
//steps是要求移動的n
void LoopMove ( char * pStr, int steps )
{
 //請填充...
}void LoopMove ( char *pStr, int steps )
{
 int n = strlen( pStr ) - steps;
 char tmp[MAX_LEN]; 
 strcpy ( tmp, pStr + n ); 
 strcpy ( tmp + steps, pStr); 
 *( tmp + strlen ( pStr ) ) = '/0';
 strcpy( pStr, tmp );
}void LoopMove ( char *pStr, int steps )
{
 int n = strlen( pStr ) - steps;
 char tmp[MAX_LEN]; 
 memcpy( tmp, pStr + n, steps ); 
 memcpy(pStr + steps, pStr, n ); 
 memcpy(pStr, tmp, steps ); 
}typedef strUCt tagWaveFormat
{ 
 char cRiffFlag[4]; 
 UIN32 nFileLen; 
 char cWaveFlag[4]; 
 char cFmtFlag[4]; 
 char cTransition[4]; 
 UIN16 nFormatTag ; 
 UIN16 nChannels; 
 UIN16 nSamplesPerSec; 
 UIN32 nAvgBytesperSec; 
 UIN16 nBlockAlign; 
 UIN16 nBitNumPerSample; 
 char cDataFlag[4]; 
 UIN16 nAudioLength; 
} WAVEFORMAT;WAVEFORMAT waveFormat;
memcpy( &waveFormat, buffer,sizeof( WAVEFORMAT ) ); class String
{ 
 public: 
  String(const char *str = NULL); // 普通構造函數 
  String(const String &other); // 拷貝構造函數 
  ~ String(void); // 析構函數 
  String & Operate =(const String &other); // 賦值函數 
 private: 
  char *m_data; // 用于保存字符串 
};//普通構造函數
String::String(const char *str) 
{
 if(str==NULL) 
 {
  m_data = new char[1]; // 得分點:對空字符串自動申請存放結束標志'/0'的空
  //加分點:對m_data加NULL 判定
  *m_data = '/0'; 
 } 
 else
 {
  int length = strlen(str); 
  m_data = new char[length+1]; // 若能加 NULL 判定則更好 
  strcpy(m_data, str); 
 }
}
// String的析構函數
String::~String(void) 
{
 delete [] m_data; // 或delete m_data;
}
//拷貝構造函數
String::String(const String &other)    // 得分點:輸入參數為const型
{ 
 int length = strlen(other.m_data); 
 m_data = new char[length+1];     //加分點:對m_data加NULL 判定
 strcpy(m_data, other.m_data); 
}
//賦值函數
String & String::operate =(const String &other) // 得分點:輸入參數為const型
{ 
 if(this == &other)   //得分點:檢查自賦值
  return *this; 
 delete [] m_data;     //得分點:釋放原有的內存資源
 int length = strlen( other.m_data ); 
 m_data = new char[length+1];  //加分點:對m_data加NULL 判定
 strcpy( m_data, other.m_data ); 
 return *this;         //得分點:返回本對象的引用
}const classA operator*(const classA& a1,const classA& a2);classA a, b, c;
(a * b) = c; // 對a*b的結果賦值int checkCPU()
{
 {
  union w
  { 
   int a;
   char b;
  } c;
  c.a = 1;
  return (c.b == 1);
 }
}int Sum( int n )
{ 
 return ( (long)1 + n) * n / 2;  //或return (1l + n) * n / 2;
}int Sum( int n )
{
 long sum = 0;
 for( int i=1; i<=n; i++ )
 {
  sum += i;
 }
 return sum;
} 新聞熱點
疑難解答