为什么Strcpy函数不能使用指向数组的指针?
问题描述:
我正在学习指针。这段代码正在产生运行时错误。 我想插入字符串在字符数组中使用指针字符。为什么Strcpy函数不能使用指向数组的指针?
#include<stdio.h>
#include<string.h>
int main()
{
char *a[10];
strcpy(*a,"foo");
}
答
的char *一个[10]是指针数组为char,你想要所以char a [10],这是
答
您已经声明a
为10个指针数组char
字符数组。 我想你的意思是声明一个10个字符的数组。
char a[10];
更改声明也意味着你需要调用更改为strcpy
:
strcpy(a,"foo");
程序现在看起来是这样的:
#include<stdio.h>
#include<string.h>
int main()
{
char a[10];
strcpy(a,"foo");
}
答
为什么strcpy函数不使用指针指向数组?
此声明
char *a[10];
指针不声明为数组。它是一个由char类型的对象组成的10个指针数组的声明。
此外,此数组未被初始化,其元素具有不确定的值。
要声明的指针类型的数组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");
哪里是你的指针'了'分配内存的代码中使用? –
编译代码时不会编译尖叫吗?你应该听它。 – Gerhardh