char配列へのポインターを関数に渡す方法を確認するために、小さなテストプログラムを作成しました。これは私のコードです:
#include <stdio.h>
#include <string.h>
int scopy(char *org ){
printf("the value of org is %s" , org);
printf("\n");
}
int main(void)
{
char original[11];
strcpy(original , "helloworld");
scopy(original);
printf("the value of original now is %s" , original);
return 0;
}
ポインターに関する私の知識は、 org が original[0] のメモリ アドレスを渡されるポインターであることを示しています。 .
org を印刷すると、完全な単語が返されます。しかし、論理によれば、ポインターがメモリアドレスを出力するはずではありません。
out[1] 、 out[2] を印刷しようとすると、コードパッドはプロセスが異常終了したことを通知します
この質問に対する私の基本的な疑問は、 org が正確に何をしているのかということです。メモリアドレスを指す char ポインターであることを理解しています (これ??) 。助けていただければ幸いです。私はcプログラミングに非常に慣れていません。
また、次のようなwhileループを試すと
while(out[i] !='\0')
printf("%s",out[i]);
'\0' で終了しません。strcpy のドキュメントには、'\0' が char 配列にコピーされると記載されています。