前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基础知识 | 每日一练(195)

基础知识 | 每日一练(195)

作者头像
小林C语言
发布2019-12-03 18:48:07
2740
发布2019-12-03 18:48:07
举报
文章被收录于专栏:C语言入门到精通
读者:请问以下代码有什么问题:

小林:

int main()

{

char a;

char *str=& a;

strcpy(str,"hello");

printf(str);

return 0;

}

没有为str分配内存空间,将会发生异常问题出在将一个字符串复制进一个字符变量指针所指地址。虽然可以正确输出结果,但因为越界进行内在读写而导致程序崩溃。

读者:

char* s="AAA";

printf("% s",s);

s[0]='B';

printf("% s",s);

有什么错?

小林:

"AAA"是字符串常量。s是指针,指向这个字符串常量,所以声明s的时候就有问题。cosnt char* s="AAA";然后又因为是常量,所以对是s[0]的赋值操作是不合法的。

读者:写一个“标准”宏,这个宏输入两个参数并返回较小的一个。

小林:

#define M in(X, Y) ((X)>(Y)?(Y):(X))//结尾没有;------语法上并没有限制宏后面必须没有分号,宏只是简单的字符替换,这里是因为使用M in的地方通常会在后面加分号。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 C语言入门到精通 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档