为什么Strcpy函数不能使用Pointer to Array?

时间:2017-07-27 13:01:31

标签: c arrays string pointers strcpy

我正在学习指针。这段代码产生运行时错误。 我正在尝试使用Pointer将字符串插入char数组中。

#include<stdio.h>
#include<string.h>
int main()
{
    char *a[10];
    strcpy(*a,"foo");
}

3 个答案:

答案 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数组

相关问题