-1
#include<stdio.h>
int copy(char d[],char e[],int n);
int main(void)
{
char a[20]="Nice to meet you";
char b[10];
copy(a+5,b,4);
return 0;
}
int copy(char d[],char e[],int n)
{
for(int i=0;i<n;i++)
{
e[i]=d[i];
}
printf("%s\n",e);
return 0;
}
這裏d
點a+5
和e
指向b
。在這裏,我明白輸出將是「to m
」。 我的問題是:在copy
函數,如果我初始化i
運行從1
到n-1
而不是0
到n-1
,爲什麼它沒有給出所需的輸出? 我預計新輸出爲「o m
」。複製子陣列到另一個數組
字符串e上沒有0終止,因此這是未定義的行爲。 – John3136
您的變量和參數名稱不會向讀者提供關於哪個是哪個的提示。像'd'和'e'這樣的名字 - 這些是什麼意思?哪個是「源」,哪個是「目標」?是的,我知道我可以閱讀功能代碼並找出它,但名稱的目的是爲了使這些事情清楚。 –
'char b [10];' - >'char b [10] = {0};' – BLUEPIXY