ldolin的专栏

不定期更新博客内容,平时使用有道笔记写Markdown 文章,有时间就导入到MSDN博客上...

C语言中若干问题

1.C语言结构体使用”->”与”.”区别

1.”->”用于指向结构成员,它的左边应为指向该结构类型的指针(结构指针)

2.”.”的左边应为该结构类型的变量(结构变量)

比如

typedef struct{
    unsigned int x;//目标的x坐标
    unsigned int y;//目标的y坐标
    unsigned int w;//目标的宽度
    unsigned int h;//目标的高度

}RESULT;//识别结果

RESULT Result;
RESULT *Resu

Result.x = x0;
Result.y = y0;

Resu->x=Result.x;
Resu->y=Result.y;
Resu->w=Result.w;
Resu->h=Result.h;   

两个运算符号的优先级相同,但是”->”用于指向结构成员,它的左边应为指向该结构类型的指针(结构指针),而”.”的左边应为该结构类型的变量(结构变量)。举个例子,这个结构有个结构指针structpoint,有个该结构类型的变量student,其中structpoint指向student,即*structpoint=student,那么structpoint->name=(*structpoint).name=student.name

2.变量定义回收与大括号

mark

上图所示,大括号的作用
1.定义变量只能在大括号跟前定义,比如y1_2
2.大括号定义作用于,y1_2在大括号外边无效

3.接着问题2,变量定义只能紧跟大括号的问题

在keil MDK中默认使用的是C89版本C语言编译,而C89不支持在程序内部定义变量,只能在函数开始定义

for (unsigned char i = 0 ; i < 10 ; i++)
{

}

因此需要keil MDK选择C99模式编译,方法如下
勾选C99 mode跟在misc Controls 输入 –c99 效果相同

mark

4.define 重复定义的问题

由于编译器预处理命令是顺序进行,因此define定义是最后一个define的值
比如

#define  a  1
#define  a  2
#define  a  3
printf("%d\n", a);

3

https://blog.csdn.net/jiangxinyu/article/details/7780211

5.malloc 等内存分配函数的重定义

函数原型为

在stdlib.h中声明

extern _ARMABI void *malloc(size_t /*size*/);

可以在 #include “stdlib.h”后重新定义 malloc

比如:

#define malloc(size) (mymalloc(SRAMEX, size))

不过总觉得这样的办法不是很好

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。有任何问题请联系QQ:353973314 https://blog.csdn.net/Name_006/article/details/79950727
文章标签: c语言 结构 指针
个人分类: 总结拾遗
上一篇Altium Designer 技巧备忘
下一篇MarkDown +MPic 让写博客更顺手
想对作者说点什么? 我来说一句

C语言库函数C语言库函数

2009年05月07日 60KB 下载

C语言中指针的灵活运用

2009年05月26日 36KB 下载

好东西C语言中的指针常量

2008年11月26日 167KB 下载

C语言中.h和.c文件解析 教程

2010年06月10日 75KB 下载

c语言中命令行参数详解

2010年03月09日 29KB 下载

SVM在c语言中的.h文件

2018年07月11日 3KB 下载

没有更多推荐了,返回首页

关闭
关闭