首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型定义问题

类型定义问题
EN

Stack Overflow用户
提问于 2010-09-25 03:29:20
回答 2查看 372关注 0票数 2

嘿,请告诉我下面的声明是否正确?

如果是的话,请解释一下

代码语言:javascript
复制
typedef char HELLO[5];

HELLO name;

那么name是什么数据类型呢?如在字符、整数等中

我知道名称将是一个字符串数组,但当我运行以下程序时,我得到了错误

代码语言:javascript
复制
#include<stdio.h>

typedef char HELLO[5];

void main()
{
    HELLO name;
    name="hey";
    printf("%s",name);
}

错误:将类型‘char*’赋值给类型‘HELLO’时,类型不兼容

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-25 03:36:50

您的问题与typedef无关。您的类型是一个字符数组,也称为c样式字符串或以null结尾的字符串。

您需要使用strcpy或更好的strncpy将字符串复制到字符数组中。否则,您可以使用类型char*,您可以获得存储的字符串的地址,然后可以打印它。

我知道名称将是一个字符串数组,但是当我运行以下程序时

正确的术语应该是字符数组或缓冲区。字符串数组可能会被混淆为数组字符的数组。

票数 3
EN

Stack Overflow用户

发布于 2010-09-25 03:33:15

name的类型是char[5] -一个由5个字符组成的数组。

这样定义name

代码语言:javascript
复制
typedef char HELLO[5];

HELLO name;

等同于以下定义:

代码语言:javascript
复制
char name[5];

在C中,您不能将字符串字面值赋给char数组,如您的示例所示。您必须将字符从文字复制到数组中。为此,您可以使用strncpy()

代码语言:javascript
复制
strncpy(name, "hey", 4); // strlen("hey") == 3. 4 passed to strncpy, as the last
                         // argument causes it to add a null character at the end
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3790332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档