0
文字配列に格納された2つの文字列を交換するための1.Cコード。文字配列に格納された2つの文字列を交換するC
#include<stdio.h>
/* Swaps strings by swapping pointers */
void swap1(char **str1_ptr, char **str2_ptr)
{
char *temp = *str1_ptr;
*str1_ptr = *str2_ptr;
*str2_ptr = temp;
}
int main()
{
char str1[10] = "geeks";
char str2[10] = "forgeeks";
swap1(&str1, &str2);
printf("str1 is %s, str2 is %s", str1, str2);
getchar();
return 0;
}
読み取り専用メモリに格納された2つの文字列を交換するための2.Cコード。
#include<stdio.h>
/* Swaps strings by swapping pointers */
void swap1(char **str1_ptr, char **str2_ptr)
{
char *temp = *str1_ptr;
*str1_ptr = *str2_ptr;
*str2_ptr = temp;
}
int main()
{
char *str1 = "geeks";
char *str2 = "forgeeks";
swap1(&str1, &str2);
printf("str1 is %s, str2 is %s", str1, str2);
getchar();
return 0;
}
これら二つは二つの文字列(読み取り専用メモリ内の他のスタックに格納された1つの文字列など)をスワップするためのコードです。 同じように動作しますか? 最初のコードは正しく動作しないと言われています。 もしそうなら、なぜですか?
'最初のコードは配列を使用しているため、ポインタには崩壊する可能性がありますが、ポインタではありません。 – LPs
あなたのタイトルはミッドリーディングです。あなたは "文字列"(別名配列内容)を交換するのではなく、ポインタを交換します。そして、Cはスタックの使用を強制したり、変数が格納されている場所を定義したりしません。 – Olaf
@Gerhard:いいえ、彼らはしません! – Olaf