硬汉嵌入式论坛

 找回密码
 立即注册
查看: 425|回复: 5
收起左侧

[STM32H7] strlen求字符数组长度

[复制链接]

13

主题

15

回帖

54

积分

初级会员

积分
54
发表于 2023-12-5 19:29:48 | 显示全部楼层 |阅读模式
定义了一个常量字符数组char str[] = "2.2";
typedef struct
{
    char *pname;
}NP_test;


定义了一个数组  NP_test  szName[] ={
str,
};

为什么strlen(szName[0].pname)算出的长度是随机值呢?

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2023-12-6 08:41:37 | 显示全部楼层
我尝试让AI回答了下你这个问题

下载.png
回复

使用道具 举报

0

主题

15

回帖

15

积分

新手上路

积分
15
发表于 2023-12-6 09:34:12 | 显示全部楼层
没有随机啊
[C] 纯文本查看 复制代码
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <windows.h>


const char str[] = "2.2";
const char str2[] = "12345";
const char str3[] = "123456789";

typedef struct
{
    const char *pname;
} NP_test;


NP_test  szName[] = {
	str, str2, str3
};

int main(void)
{
	int i;	
	for(i=0; i<3; i++) 
	{
		printf("&szName[%d]: 0x%08X\r\n", i, &szName[i]);
	}	
	for(i=0; i<3; i++) 
	{
		printf("szName[%d].pname: 0x%08X\r\n", i, szName[i].pname);
	}	
	for(i=0; i<3; i++) 
	{
		printf("strlen(szName[%d].pname) = %d\r\n", i, strlen(szName[i].pname));
	}	
	system("pause");
}
屏幕截图 2023-12-06 093252.png
回复

使用道具 举报

76

主题

685

回帖

913

积分

金牌会员

积分
913
发表于 2023-12-6 10:04:09 | 显示全部楼层
eric2013 发表于 2023-12-6 08:41
我尝试让AI回答了下你这个问题

看起来AI这个回答很给力
回复

使用道具 举报

2

主题

269

回帖

275

积分

高级会员

积分
275
发表于 2023-12-6 10:43:39 | 显示全部楼层
庄永 发表于 2023-12-6 10:04
看起来AI这个回答很给力

看起来很给力但不一定对,AI大概忘记"XXX"定义的字符串本身结尾就带有0了,不存在向后搜索.
回复

使用道具 举报

22

主题

67

回帖

133

积分

初级会员

积分
133
发表于 2023-12-6 15:47:10 | 显示全部楼层
eric2013 发表于 2023-12-6 08:41
我尝试让AI回答了下你这个问题

硬汉哥  全局变量的地址不是随机的叭  常量区的地址是固定的  字符串末尾自动+\0 呀
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-10 03:50 , Processed in 0.372072 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表