我正在学习指针。这段代码产生运行时错误。 我正在尝试使用Pointer将字符串插入char数组中。
#include<stdio.h>
#include<string.h>
int main()
{
char *a[10];
strcpy(*a,"foo");
}
答案 0 :(得分:2)
您已将a
声明为指向char
的10个指针的数组。
我想你的意思是声明一个10 char的数组。
char a[10];
更改声明也意味着您需要将呼叫更改为strcpy
:
strcpy(a,"foo");
该程序现在看起来像这样:
#include<stdio.h>
#include<string.h>
int main()
{
char a[10];
strcpy(a,"foo");
}
答案 1 :(得分:2)
为什么Strcpy函数不能使用Pointer to Array?
此声明
char *a[10];
不会声明指向数组的指针。它是一个包含10个指针的数组的声明,指向char类型的对象。
此外,此数组未初始化且其元素具有不确定的值。
要声明指向类型为char[10]
的数组的指针,您应该编写
char ( *a )[10];
如果要在函数strcpy
中使用指针,则指针必须由适当数组的地址初始化。
您的意思似乎如下。
#include <stdio.h>
#include <string.h>
int main(void)
{
char s[10];
char ( *a )[10] = &s;
strcpy( *a, "foo" );
puts( s );
return 0;
}
程序输出
foo
在这个程序中确实声明了一个指向char[10]
char ( *a )[10] = &s;
并且指针由数组s
的地址初始化。
取消引用的指针用于函数strcpy
strcpy( *a, "foo" );
答案 2 :(得分:1)
char * a [10]是指向char的指针数组,你想要char a [10]这是一个chars数组