アドレスで文字列を参照するために使用される文字ポインタを渡す場合 (つまり、名前または を介して直接&name[0]
)、アドレスで渡すため、元の文字列を渡す必要があります。
しかし、次のコードを実行した後、最初の要素のアドレスの 2 つの異なる値を取得しました。驚くべきことに、それらは 2 バイト離れています。
また、関数内の文字列の内容を変更しても、渡された配列の内容は変更されませんでしたが、これは、新しい文字列によって新しいアドレスが生成されるためですよね?
しかし、最初の要素のアドレスが異なることについては、どのように可能ですか?
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
void fn(char *arr)
{
cout<<endl<<&arr;
arr="hi";
}
void main()
{
clrscr();
char *arr="hey";
cout<<endl<<"main "<<&arr;//the address is different from that in fn
fn(arr);
cout<<endl<<arr;
}