嘿,请告诉我下面的声明是否正确?
如果是的话,请解释一下
typedef char HELLO[5];
HELLO name;那么name是什么数据类型呢?如在字符、整数等中
我知道名称将是一个字符串数组,但当我运行以下程序时,我得到了错误
#include<stdio.h>
typedef char HELLO[5];
void main()
{
HELLO name;
name="hey";
printf("%s",name);
}错误:将类型‘char*’赋值给类型‘HELLO’时,类型不兼容
发布于 2010-09-25 03:36:50
您的问题与typedef无关。您的类型是一个字符数组,也称为c样式字符串或以null结尾的字符串。
您需要使用strcpy或更好的strncpy将字符串复制到字符数组中。否则,您可以使用类型char*,您可以获得存储的字符串的地址,然后可以打印它。
我知道名称将是一个字符串数组,但是当我运行以下程序时
正确的术语应该是字符数组或缓冲区。字符串数组可能会被混淆为数组字符的数组。
发布于 2010-09-25 03:33:15
name的类型是char[5] -一个由5个字符组成的数组。
这样定义name
typedef char HELLO[5];
HELLO name;等同于以下定义:
char name[5];在C中,您不能将字符串字面值赋给char数组,如您的示例所示。您必须将字符从文字复制到数组中。为此,您可以使用strncpy()。
strncpy(name, "hey", 4); // strlen("hey") == 3. 4 passed to strncpy, as the last
// argument causes it to add a null character at the endhttps://stackoverflow.com/questions/3790332
复制相似问题