洛上言 2023-06-12 21:35 采纳率: 95.4%
浏览 11
已结题

这里为啥会报错?s->data不就是data的数组名,那为什么不可以用sizeof计算数组的大小?如果要计算str除了在main里将大小传进来还有其他别的办法

这里为啥会报错?
错误1:
为啥会报这种错误?

img


错误2:
s->data不就是data的数组名,那为什么不可以用sizeof计算数组的大小?如果要计算str除了在main里将大小传进来还有其他别的办法吗?

img


完整代码:
String.h:

#pragma once
#define _CRT_SECURE_NO_WARNINGS
#define MAXSIZE
#include<stdio.h>
#include<string.h>
typedef struct {
    char data[MAXSIZE];
    int length;
}SqString;

void StrAssign(SqString* s, const char* str);

void DispStr(SqString s);

String.cpp:

#include"String.h"
void StrAssign(SqString* s, const char* str)
{
    strcmp(s->data, str);
    s->length = sizeof(s->data);
}

void DispStr(SqString s)
{
    int i = 0;
    printf(s.data);
}

test.cpp:

#include"String.h"
int main()
{
    SqString s, s1, s2, s3;
    printf("顺序串的基本操作如下:\n");
    printf("(1)建立串s和串s1\n");
    StrAssign(&s, "abcdefghijklmn");
    StrAssign(&s1, "123");
    printf("(2)输出串s:");
    DispStr(s);
    return 0;
}

  • 写回答

3条回答 默认 最新

  • threenewbee 2023-06-12 21:48
    关注

    #define MAXSIZE 后面加上一个数字,比如100
    vc++不支持变量数组长度初始化,gcc支持
    sizeof在主程序里可以获取长度,但是函数里,数组退化为指针,取不到。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月21日
  • 已采纳回答 6月13日
  • 创建了问题 6月12日