这里为啥会报错?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;
}

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

你第三行宏定义 定义了个啥 没大小
#define MAXSIZE 10

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    抱歉,由于问题给出的信息不够具体,我无法给出有效的解决方案。请提供更具体的示例或代码,以便我能够更好地理解问题并提供解决方案。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^