社区
C++ 语言
帖子详情
(晨星)、(天上的肥鸭不怕C++,就怕开水烫)两位大哥,为什么你们能对c++底层能这么了解呢?
cowboy2006
2003-07-10 11:17:34
???
你们学c++有多长时间了?
工作了吗?工作了有多长时间了?
...全文
209
55
打赏
收藏
(晨星)、(天上的肥鸭不怕C++,就怕开水烫)两位大哥,为什么你们能对c++底层能这么了解呢?
??? 你们学c++有多长时间了? 工作了吗?工作了有多长时间了?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
55 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
iNothing
2003-08-12
打赏
举报
回复
kao,玩BT啊?
#include <stdio.h>
char *GetMemory(void)
{
char *p;
_asm
{
jmp addr1
addr:
_emit 'H'
_emit 'e'
_emit 'l'
_emit 'l'
_emit 'o'
_emit ' '
_emit 'w'
_emit 'o'
_emit 'r'
_emit 'l'
_emit 'd'
_emit '!'
_emit 0x0a
_emit 0x0
addr1:
mov eax, offset addr
mov p, eax
}
return p;
}
void main(void)
{
char *str = NULL;
str = GetMemory();
printf(str);
//putchar('\n');
}
Congy
2003-07-17
打赏
举报
回复
void foo(char const ** const p)
{
const char q[] = "world, hello!\n";
*p = q;
};
int __cdecl main()
{
char const * const p = "hello, world!\n";
char const ** const pp = (char const ** const)&p;
foo(pp);
printf("%s", *pp);
return 0;
}
大家猜,这个的结果又怎样??
bluedodo
2003-07-12
打赏
举报
回复
跟一跟,起床接着看
frankMasson
2003-07-11
打赏
举报
回复
先前看到一个另类版的 hello world,顺道贴过来.
cow 先不要编译,考虑一下它的结果.
#include<stdio.h>
void foo(char ** p)
{
*p = "world, hello!\n";
}
int __cdecl main()
{
char *p = "hello, cow \n";
foo(&p);
printf("%s", p);
return 0;
}
晨星
2003-07-11
打赏
举报
回复
哦,目前还是学生,只是在做兼职。
业余喜欢听大戏,:)。最喜欢的演员:于魁智、邓沐玮。
leeseon
2003-07-11
打赏
举报
回复
楼上的------经典经典
拍马屁的--------不是不是
晨星
2003-07-11
打赏
举报
回复
呵呵,兄弟对C++的底层知之甚少,只是近来到CSDN上泡的时间比较多,所以给楼主造成了这种错觉。
这两年,在C++上的确有所提高,主要靠CSDN上网友的帮助。
大家互相学习吧。
oldgameman
2003-07-11
打赏
举报
回复
呵呵...
虚心学习请教的---可以可以.
拍马屁的---不要不要.
<<C++ PRIMER>>---要得要得.
<<THE C++ PROGRAMMING LANGUAGE>>,<<C++标准库>>,<<编译原理>>,<<线代>>,<<离散>>,<<数据结构>>,<<操作系统>>,<<计算机体系结构>>....---更高更高.
4分理论6分实践---王道王道.
xclovejjforever
2003-07-11
打赏
举报
回复
#include <stdio.h>
void foo(char **s)
{
printf("s address is :%xd\n *s address is :%d\n &s address is :%xd\n", s, *s, &s);
*s="Hello!";
printf("s address is :%xd\n *s address is :%d\n &s address is :%xd\n", s, *s, &s);
}
int main(void)
{
char *p="World";
printf("%xd\n",&p);
foo(&p);
printf("%s", p);
printf("%xd\n", &p);
return 0;
}
如果这样的话,因该就是一目了然了吧!~
结果里面只有一个地址的变化!~
frankMasson
2003-07-11
打赏
举报
回复
你看就不要大哥前大哥后的了,我比你大不了多少,简单点叫肥鸭吧.
我的工作主要是搞 DirectX 方面的东西.对 C++ 的底层了解实在不敢说.当年在学校时很多东西都还没整明白,自己稀里糊涂地就拿了毕业证,其实许多的知识是在工作中恶补的.虽然工作有两年多了,慢慢地才发现,以前大学里的一些书不知从何时开始,又出现在了自己的工作台前.这里面有线性代数,有汇编,有编译原理,有数据结构,当然,也有一本<<c++ primer>>.
我想吧,有一些东西,在一开始的时候就能正确地了解它的本质,虽然困难,虽然可能会由这次次的失败而感到痛苦.但有一天,你看到你的同事为自己写的一段程序反复调试而抓狂的时候,你会知道你以前的付出绝对是有价值的.
其实,有很多我们看起来并不起眼的东西,里边都有意想不到的宝贵经验.
举个例子, 像 cout 这一个十分简单明了的小东西,楼主可曾看过它实现的代码?还有标准C/C++的标准库函数,能否自己试着实现几个? 然后看看自己的方法和库提供的有何不同,孰优孰劣? 看一看编译器在编译这些个东西的时候,都干了一些什么,把一些小例子,在汇编下调试一下,跟一跟,不需要太多的时间(相对而言), cow 兄成大师矣.
ps.业余我喜欢弹古典吉它,说我对c++底层很了解,我实在受不起,但说我对古典吉它很有研究,那是当仁不让的.
beistone
2003-07-11
打赏
举报
回复
up
penter
2003-07-11
打赏
举报
回复
mark;
idontlikenickname
2003-07-11
打赏
举报
回复
还是这个坛子气氛好~
有这么多可以相互切磋的朋友,又有这么负责任的斑竹.
en~~心情愉快~~~
cowboy2006
2003-07-11
打赏
举报
回复
#include<stdio.h>
void foo(char ** q)
{
*q = "world, hello!\n";
}
int __cdecl main()
{
char *p = "hello, cow \n";
foo(&p);
printf("%s", p);
return 0;
}
好象想通了:
q=&p(函数参数传递时)
*q="world, hello!\n"; => p="world, hello!\n";
所以是"world, hello!\n";
darcymei
2003-07-11
打赏
举报
回复
问个问题:像这样的常量字符串是不是像汇编的伪指令一样,在生成exe是直接加载在内存的数据段里?
frankMasson
2003-07-11
打赏
举报
回复
to cow:
我QQ基本不用,现在只有 msn
frankmasson2003@hotmail.com
Flamesong
2003-07-11
打赏
举报
回复
看不出楼上的例子有何高深,望各位指教。
snipersu
2003-07-11
打赏
举报
回复
常量的问题,指针的指针的问题。
^v^
晨星
2003-07-11
打赏
举报
回复
真的有那么麻烦吗?
我觉得这个程序在理解上无非就是两点需要注意:
(1)通过用二级指针做函数参数可以在函数内通过形参来修改二级指针的内容,即一级指针。此程序中就使二级指针指向的一级指针重新指向了新的字符串。
(2)字符串常量保存在静态存储区中,所以函数返回后,它依然存在,可以被打印。不像一般的局部变量,如果函数退出后还引用,会很危险。
frankzch
2003-07-11
打赏
举报
回复
to 小欧:
char *p="hello cow\n"等价于 char *p;p="hello cow\n";是对指针p的初始化,由于指针p是指针变量,所以他可以任意改变指向(能不能改变内容决定于指针本身,常量指针才不能改变内容)
例程很清晰,没有任何问题,主要是考虑一个“指向指针的指针”问题
程序先进入main里面,p1是一个指针,令q=&p1,q的内容(*q)为p1的地址;
接着在foo里面,p2是一个指向指针的指针,不妨令指针r=*p2,因为把&p1传递给**p2,所以r的内容(*r=**p2)就是p1的地址(&p1),所以r=q,并且r和q是共用一块存储区域,修改r就修改了q,所以结果肯定是“world,hello!\n";
加载更多回复(35)
世界十大餐饮奢侈品牌.pptx
世界十大餐饮奢侈品牌.pptx
中华名小吃.docx
中华名小吃.docx
wp处理溢出的文本案例
在用户界面上显示文本,用得严重多的是TextBlock,凡是轻量级的东西都会很常用,TextBlock对于显示简单、少量的文本内容相当适合,不过,在我们考虑要在用户界面上显示格式较为复杂,并且内容相当长的文本时,就得使用RichTextBlock了。 多了一个Rich在前面就不得了,Rich原义为丰富的意思,所以该控件既能显示较长的文本,而且还能支持更多的文档格式。在RichTextBlock中,能过Blocks集合来设置内容,而Block类是抽象的,不能直接用,然它只有一个子类——Paragraph。 如其名,Paragraph表示一个段落。也就是说,在RichTextBlock控件中,文本内容可以由N个段落组成,关于什么叫段落,不要问我,如果你不知道段落是啥,请买上一壶好酒,一只
肥
鸭
去回访你的小学语文老师。 详细说明:http://wp.662p.com/thread-8304-1-1.html
中国名菜燕京风味
这是一款整理发布的中国名菜燕京风味,非常适合需要中国名菜燕京风味的朋友们。PS:可下载全部...该文档为中国名菜燕京风味,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看
语言宝盒下载
一、语法 1、 条件语句 IF (条件) then [如果……. 那么] ……… end 范例: If 人物等级() >= 35 then 执行脚本(“护境安民.txt”) End 2、 条件语句 IF (条件) then ...... else ...... end 范例: if 人物职业() = "古墓派" then _返回师门(True) else _返回师门(False) end 3、 循环语句 [满足条件循环] While (条件) …….. End 范例: While 人物等级 < 30 寻路到(122,133,”大胜关”) 杀怪() End 4、 循环语句 [一直执行循环] while true ...... end 二、特殊函数:必须引用基础函数库 Import "函数库\[密]基础函数库.dat" 写在脚本最上面 _获取任务环数("师门任务") 得到任务还数[可接任务中可看到的任务] _回到师门(?是否对话师父:布尔值) _回到师门(False) [回师门不到接任务处] ;_回到师门(True) 回到师门接师门任务处 _自动创建队伍(?侠侣队伍名单,False) 三、函数 函数名称(?参数1:参数类型,?参数2:参数类型...) 四、内置函数 函数 给予玩家物品(?玩家名称:字符串,?身上保留银两:整数,?给予物品列表:字符串) 说明 将身上银两和物品给予指定的玩家 返回 True/False 示例 给予玩家物品("天天收钱",1000,"岁寒三友,口水鸡,藏宝图") 函数 循环杀怪(?地图名称,x,y,?到需要等级) 说明 到指定地图位置循环杀怪,直到指定的等级 返回 示例 循环杀怪("西湖水道一层",120,130,35) 函数 RANDOM(?a:整数,?b:整数) 说明 返回一个a和b之间随机数 随机速不包括b 返回 整数 示例 ?int = RANDOM(1,4) ?int= 1或2或3 函数 取整(?a:浮点数) 说明 把a取整 返回 整数 示例 ?int = 取整(1.6) ?int=1 函数 执行脚本(?脚本名称:字符串) 说明 执行脚本 返回 无 示例 执行脚本("test.txt") 函数 修改设置(?设置项:字符串,?值:字符串或整数或布尔值) 说明 执行脚本过程中动态修改设置项 返回 无 示例 修改设置("B5","普通攻击") 修改设置("E0",True) 修改设置("C10",5) 函数 恢复设置(?设置项:字符串) 说明 恢复设置项修改前的值 返回 无 示例 恢复设置("B5") 函数 读取设置(?设置项:字符串) 说明 返回设置项的值 返回 字符串或浮点数 示例 ?value = 读取设置("B5") 函数 报警() 说明 播放辅助文件夹中的bj.wav 返回 无 示例 报警() 函数 提示(?str:字符串) 说明 在游戏聊天频道中插入str 返回 无 示例 提示("开始执行脚本") 函数 日志输出(?str:字符串) 说明 在辅助Log文件夹中写入str 返回 无 示例 日志输出("开始执行脚本") 函数 导入配置(?str:字符串) 说明 将辅助ConfigTemplate文件夹中指定的配置文件导入到当前角色上 返回 True或False 示例 导入配置("古墓派") 函数 切换登录() 说明 关闭游戏等待登录端启动下个帐号 返回 无 示例 切换登录() 函数 延时(?time:整数) 说明 等待time后继续 返回 无 示例 延时(1000) 延时1秒 函数 取时间(?type:字符串) 说明 根据type取本地时间 返回 整数 示例 ?x = 取时间("日") ?a = 取时间("时") ?b = 取时间("分") ?c = 取时间("星期") 函数 寻路到(?X坐标:整数,?Y坐标:整数,?地图名:字符串) 说明 自动寻路到指定位置 返回 无 示例 寻路到(100,100,"临安") 函数 寻路到(?X坐标:整数,?Y坐标:整数,?地图ID:整数) 说明 自动寻路到指定位置 返回 无 示例 寻路到(100,100,1007) 函数 寻路到(?X坐标:整数,?Y坐标:整数,?地图ID:整数,?NPCID:整数) [地图ID可在data.txt文件中查看] 说明 自动寻路到指定位置并对话NPC 返回 无 示例 寻路到(416,356,1007,$2AD0) 寻路到临安的416,356位置对话食品售卖 函数 杀怪(?随机移动:布尔值) 说明 开始巡逻 返回 无 示例 杀怪() 开始巡逻 杀怪(True) 开始随机移动 函数 对话NPC(?name:字符串) 说明 对话指定NPC 返回 True或False 示例 对话NPC("食品售卖") 函数 自动对话NPC(?NPCID:整数) 说明 寻路到指定NPC并对话 返回 True或False 示例 自动对话NPC($2AD0) 函数 自动对话NPC(?任务名称:字符串,?任务信息类型:字符串) 说明 寻路到任务指定NPC并对话 任务信息类型:追踪 目标 描述 返回 True或False 示例 自动对话NPC("[主线]激战襄阳","追踪") 函数 抓取宠物(?PetName:字符串) 说明 在雷峰塔明怪区抓宠物 返回 True或False 示例 抓取宠物("小花猫") 函数 存在交谈选项(?选项:字符串) 说明 判断是否存在选项 返回 True或False 示例 if 存在交谈选项("*等我") then 函数 交谈选择(?选项:字符串) 说明 根据选项交谈选择 返回 无 示例 交谈选择("*好的") 函数 交谈选项信息() 说明 返回当前NPC对话框选项及描述信息 可根据这些信息分割成数组来处理 返回 字符串 示例 ?str = 交谈选项信息() 函数 自动升级() 说明 当人物经验足够就自动升级 返回 无 示例 自动升级() 函数 自动升级(?lev:整数) 说明 当人物等级低于lev时自动升级 返回 无 示例 自动升级(40) 函数 存在任务(?任务名称:字符串) 说明 判断是否存在任务 返回 True或False 示例 if 存在任务("*名动江湖") then 函数 存在任务(?任务ID:整数) 说明 判断是否存在任务 返回 True或False 示例 if 存在任务($C5C13) then 函数 交任务(?物品名称:字符串) 说明 交给予物品任务 需要先对话NPC 交谈选择("..") 返回 True或False 示例 交任务("八宝
肥
鸭
") 函数 任务完成(?任务名称:字符串) 说明 判断是任务是否完成 返回 True或False 示例 if 任务完成("*名动江湖") then 函数 放弃任务(?任务名称:字符串) 说明 放弃任务 返回 True或False 示例 放弃任务("*名动江湖") 函数 获取任务信息(?任务名称:字符串,?任务信息类型:字符串) 说明 获取指定任务信息 任务信息类型:追踪 目标 描述 返回 字符串 示例 ?str = 获取任务信息("*名动江湖","描述") 函数 背包剩余格子() 说明 返回背包剩余空格 返回 整数 示例 if 背包剩余格子() < 1 then 函数 背包物品数量(?物品名称:字符串) 说明 返回背包指定物品数量 返回 整数 示例 if 背包物品数量("当归") < 1 then 函数 使用物品(?物品名称:字符串,?延时时间:整数) 说明 使用指定物品并等待延时时间 返回 True或False 示例 使用物品("当归",1000) 函数 购买(?NPC名称:字符串,?物品名称:字符串,?物品数量:整数) 说明 向NPC购买指定物品 返回 True或False 示例 购买("药店老板","当归",2) 函数 购买(?ItemID:整数,?ItemAmount:整数) 说明 自动寻路购买指定ID的物品 返回 True或False 示例 购买(33003,2) 33003是当归的ID 函数 出售(?NPC名称:字符串,?物品名称:字符串) 说明 向NPC出售指定物品 返回 无 示例 出售("药店老板","..") 函数 存仓库(?NPC名称:字符串,?物品列表:字符串) 说明 向仓库管理员存指定物品 返回 无 示例 存仓库("仓库管理员","瓷器,当归") 函数 取仓库(?NPC名称:字符串,?物品列表:字符串) 说明 向仓库管理员取指定物品 返回 无 示例 取仓库("仓库管理员","瓷器,当归") 函数 丢弃物品(?物品列表:字符串) 说明 丢弃指定物品 返回 无 示例 丢弃物品("瓷器,当归") 函数 物品名称(?ID:整数) 说明 返回指定ID的物品名称或NPC名称 返回 字符串 示例 ?Name = 物品名称(33003) ?Name = "当归" 函数 物品价格(?ID:整数) 说明 返回指定ID的物品出售价格 返回 整数 示例 ?Price = 物品价格(33003) ?Price = 100 函数 采集(?物品名称:字符串) 说明 采集 返回 无 示例 采集("..") 函数 使用技能(?技能名称:字符串) 说明 使用技能 返回 True或False 示例 使用技能("天涯回首") 函数 使用技能(?坐标X:整数,?坐标Y:整数) 说明 使用轻功飞向指定坐标 返回 无 示例 使用技能(100,100) 函数 技能等级(?技能名称:字符串) 说明 返回指定技能等级(门派和生活技能) 返回 整数 示例 if 技能等级("天涯回首") < 1 then 函数 回到门派() 说明 使用技能回到门派 返回 无 示例 回到门派() 函数 学习技能(?穴位名称:字符串,?穴位等级:整数) 说明 冲指点穴位到指定穴位等级 返回 无 示例 学习技能("命门",20) 函数 学习生活技能(?技能名称:字符串,?技能等级:整数) 说明 学习指定生活技能到指定等级 返回 无 示例 学习生活技能("烹饪",15) 函数 召出宠物() 说明 召出等级最低的宠物 返回 True或False 示例 召出宠物() 函数 召出宠物(?宠物名称:字符串) 说明 召出指定宠物 宠物名称="" 则召出最后一个宠物 返回 True或False 示例 召出宠物("功夫驴") 函数 召回宠物() 说明 召回宠物 返回 无 示例 召回宠物() 函数 放生宠物(?宠物名称:字符串) 说明 放生指定宠物 宠物名称="" 则放生最后一个宠物 返回 True或False 示例 放生宠物("功夫驴") 函数 宠物信息(?宠物名称) 说明 返回指定宠物的信息 包括名称、颜色、分数、悟性、技能个数、技能 返回 字符串 示例 ?str = 宠物信息("功夫驴") 函数 宠物数量() 说明 返回当前宠物数量 返回 整数 示例 ?count = 宠物数量() 函数 宠物数量(?index:整数) 说明 返回当前宠物最大数量 返回 整数 示例 ?count = 宠物数量(1) 函数 宠物位置(?宠物名称:字符串) 说明 返回指定宠物在宠物栏中的位置 宠物名称为空则返回最后一个宠物的名称 返回 字符串 示例 ?pos = 宠物位置("功夫驴") ?pos=0 |?name = 宠物位置("") ?name="功夫驴" 函数 回城买卖() 说明 根据设置执行回城买卖 返回 无 示例 回城买卖() 函数 修理装备(?NPC:字符串,?最低耐久度:整数) 说明 修理所有低于设置耐久度的装备 返回 无 示例 修理装备("药店老板",10) //聊天频道 1附近2队伍3门派4帮派5世界6系统7消息10家族11小喇叭 函数 发送聊天(?频道:整数,?聊天内容:字符串) 说明 对指定频道发送聊天信息 返回 无 示例 发送聊天(1,"abdasgdsa") 函数 存在聊天记录(?频道:整数,?角色:字符串,?聊天内容:字符串) 说明 返回指定频道指定角色最后的包含指定聊天内容的聊天信息 返回 字符串 示例 ?str = 存在聊天记录(1,人物名称(),"aaa") 函数 创建队伍() 说明 自己创建一个队伍 返回 无 示例 创建队伍() 函数 队长() 说明 返回当前队长名称() 返回 字符串 示例 if 队长() = 人物名称() then 函数 队伍数量() 说明 返回当前队伍数量 返回 整数 示例 if 队伍数量() > 1 then 函数 队伍名单() 说明 返回队伍名单列表 返回 字符串 示例 ?str = 队伍名单() 函数 离开队伍() 说明 离开队伍 返回 无 示例 离开队伍() 函数 队伍顺序() 说明 返回队员在队伍的顺序号 返回 整数 示例 ?pos = 队伍顺序() 函数 队员状态(?队员名称:字符串) 说明 返回队员的暂离/跟随状态 1跟随2暂离 返回 整数 示例 ?status = 队员状态(人物名称()) 函数 回归队伍(?是否回归:布尔值) 说明 回归/暂离队伍 返回 无 示例 回归队伍(True) 回归队伍(False) 函数 申请队伍(?玩家名称:字符串) 说明 向指定玩家申请加入队伍 返回 True或False 示例 申请队伍("asdg") 函数 接受队伍(?玩家名称列表:字符串) 说明 队长接受指定名称的玩家 返回 无 示例 接受队伍("aa,bb,cc") 函数 当前大地图() 说明 返回角色当前所在地图名称 返回 字符串 示例 ?map = 当前大地图() 函数 当前大地图ID() 说明 返回角色当前所在地图ID 返回 整数 示例 ?mapID = 当前大地图ID() 函数 关闭动画() 说明 关闭动画 返回 无 示例 关闭动画() 函数 存在窗口(?窗口名称:字符串,?等待时间:整数) 说明 在指定时间内一直等待出现指定名称的窗口 等待时间为x秒 返回 True或False 示例 if 存在窗口("MessageBox",5) then 函数 点击按钮(?控件名称:字符串) 说明 点击指定按钮 返回 无 示例 点击按钮("MessageBox/OK") 函数 点击按钮(?控件名称:字符串,?左位置:整数,?上位置:整数) 说明 在指定按钮的指定位置进行点击 返回 无 示例 点击按钮("MessageBox/OK",10,10) 函数 窗口文本(?控件名称:字符串) 说明 获取指定窗口上的显示文本 返回 字符串 示例 ?str = 窗口文本("MessageBox/text") //角色信息 函数 人物ID() 说明 返回人物ID 返回 整数 示例 函数 人物名称() 说明 返回角色名称 返回 字符串 示例 函数 人物职业() 说明 返回角色职业 返回 字符串 示例 函数 人物X坐标() 说明 返回角色X坐标 返回 整数 示例 函数 人物Y坐标() 说明 返回角色Y坐标 返回 整数 示例 函数 人物等级() 说明 返回角色当前等级 返回 整数 示例 函数 人物经验() 说明 返回人物当前经验 返回 整数 示例 函数 人物金币() 说明 返回角色当前非绑定银两 返回 整数 示例 函数 人物生命() 说明 返回角色当前生命比例 返回 浮点数 示例 函数 人物魔法() 说明 返回角色当前真气比例 返回 浮点数 示例 函数 人物存在状态(?状态ID:整数) 说明 判断角色是否存在指定ID状态 返回 True或False 示例 函数 人物距离(?X:浮点数,?Y:浮点数) 说明 返回角色与指定坐标的距离 返回 浮点数 示例 函数 人物当前宠物名称() 说明 返回角色当前召出的宠物名称 返回 字符串 示例 函数 人物行动力() 说明 返回角色行动力 返回 整数 示例 函数 人物属性(?属性类型ID:整数) 说明 根据属性类型ID返回角色属性 返回 整数或字符串 示例 人物属性($3C) 返回的是角色当前生命 函数 人物游戏账号() 说明 返回角色游戏帐号 返回 字符串 示例 函数 关闭游戏(?原因:字符串) 说明 关闭当前游戏 返回 无 示例
C++ 语言
65,199
社区成员
250,520
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章