#include<stdio.h>
void display(int n, char *str[])
{
int i=0;
while(i<n) printf("%s ",str[i++]);
}
int main()
{
display(1,"Hello");return 0;
}
当我运行上面的代码时,我收到警告
arr.c: In function 'main':
arr.c:11:12: warning: passing argument 2 of 'display' from incompatible pointer
type
display(1,"hello");
^
arr.c:3:6: note: expected 'char **' but argument is of type 'char *'
void display(int n,char *str[])
但是它和
有什么不同 int main(int argc, char * argv[])
和
有什么区别 char **argv and char *argv[]
我绝对不是在问像 char *argv[100] 这样的问题
最佳答案
作为函数的参数,char **ptr
和char *ptr[]
是等价的,否则它们是不同的。前者是指向char
的指针,而后者是指向char
的指针数组。
当将字符串文字传递给函数时,会传递指向其第一个字符(char *
类型)的指针。您需要将函数的第二个参数更改为 char *str
。
void display(int n, char *str)
{
// Function body
}
关于c - C 中的 char **ptr 和 char *ptr[] 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30651353/