假设我有以下代码:
main ()
{
char string[20];
printf(" The String is %s \n " , &str);
}
printf(" The String is %s \n " ,&str);
会给出什么?
假设str指向位置200,&str
会给出什么?
答案 0 :(得分:1)
不确定你到底想要什么,但根据问题标题,你可能想知道关于数组地址的一些事情:
main () { char string[20]; char *str = &string; printf("The String addr is %p \n" , &string); printf("The String addr is %p \n" , &string[0]); printf("The String addr is %p \n" , str); printf("The String addr is %p \n" , &str[0]); }
所有这些都是获取“数组”地址的等效方法。数组的地址是数组的第一个元素的地址。
答案 1 :(得分:0)
你应该收到警告说
%s expects char* but argument 2 has char (*)[20] type.
地址未打印,实际上没有打印。
答案 2 :(得分:0)
假设你实际上用一个字符串初始化了数组(你没有,但我们假设你做了)然后:
类型为char (*)[20]
。它将提供与
printf("The String is %s\n", str)
&str
指向与str
相同的内存位置,但属性不同;指针指向数组。 str
的类型是指向char的类型。