在传递用于通过地址(即直接通过其名称或&name[0]
)引用字符串的字符指针时,必须传递原始字符串,因为我们是通过地址传递的。
但是,在执行以下代码后,我得到了第一个元素的两个不同的地址值,令人惊讶的是,它们相隔 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;
}