【发布时间】:2020-02-19 04:23:36
【问题描述】:
我目前正处于编程的第一年,并且已经使用字符串数组解决了一些代码的问题,但不知道它为什么会起作用。我们还在研究指针,但我想尝试一下数组。
我想从主函数传递一个字符串的值,传递给另一个函数,将它与另一个字符串进行比较。如果两个字符串相等,则打印“equal”,否则打印“not equal”。虽然我已经解决了这个问题,但我对它的工作原理感到困惑:
char name1[100];
scanf("%s",name1);
getname(name1[0]);
return 0;
}
void getname(char name1[0]){
printf("Name1 is %s",name1);
return;
}
如果你以这种方式运行它,它将不会运行该函数并会返回一个垃圾值。但是,如果我改变
getname(name1[0]);
进入
getname(&name1[0]);
它工作得很好,这是为什么呢?其次,在“getname”函数中。因为我必须在函数调用中添加与号/地址,所以有人告诉我,我需要在变量旁边添加一个星号,以避免获取实际地址,而是获取实际值。为什么在
printf("Name1 is %s",name1);
它可以完美地打印字符串而不需要它:
printf("Name1 is %s",*name1);
【问题讨论】:
-
为了确保我理解,
name1被声明为char name1[100]?你是怎么分配给它的? -
我认为您的问题中已经包含所需的信息,但理想情况下,请将您显示的代码部分转换为minimal reproducible example。
标签: c