華爲C/C++筆試題系列二
筆試2.24W
1.說出下面這個程序的運行結果,並簡要敘述其理由:
char buf1[10]="hello";
char buf2[10]="hello";
if (buf1==buf2)
printf("equal!");
else printf("not equal!");
答:因爲buf1,buf2分配了不同的內存塊,而比較的是數組名,實際上是兩個分別指向數組起始元素地址的指針。
2.指出下面這段程序中存在一些什麼問題:
int loop,a[5];
int* p=a;
for (loop=0;loop<5;loop++)< p="">
{ p++;
*p=loop;
}
答:數組a[5]在創建時沒有初始化, 在for循環裏也沒有起到完全初始化數組的作用,而且對一塊未知內存賦值。在最後一輪循環結束時p指向了數組a[5]的最後一個元素的下一個地址。
string 系列
char * strcpy( char *strDest, const char *strSrc )
{
assert( (strDest != NULL) && (strSrc != NULL) );
char *address = strDest;
while( (*strDest++ = * strSrc++) != ‘