![](https://img-blog.csdnimg.cn/20190918140145169.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C语言例程与知识
实际项目开发的例子
三金哥行道
这个作者很懒,什么都没留下…
展开
-
那些年嵌入式开发c&c++入的坑号005
坑位描述:强制指针偏移问题 char szTmpBuf[4] = {0}; char szDataBuf[256] = {0}; char* p = szDataBuf; //注意下面两者的区别: UINT32* pUint32 = UINT32*(p) + sizeof(szTmpBuf); UINT32* pUint32 = UINT32*(p + sizeof(szTmpBuf)); pUint32指向哪儿呢? ...原创 2020-05-24 11:04:48 · 371 阅读 · 0 评论 -
那些年嵌入式开发c&c++入的坑号003
坑位描述:新增了一个线程函数,该线程函数入参为指针或者变量(即传地址或传值),在启动该线程的局部调用函数中,给线程传入的变量或者指针是局部变量或局部变量的指针,这样极大概率因该线程优先级不够高或者cpu调度不及时导致启线程较慢,调用线程的局部函数已经执行完了,同时释放局部变量和局部变量的指针内存,造成线程入参值为0. 入坑场景1: void *runner(int *param)/*子线程将会执行这个函数,入参值应大于0*/ void tmp_func() { int a = 2; pthread_cr原创 2020-05-24 10:45:27 · 385 阅读 · 0 评论 -
那些年嵌入式开发c&c++入的坑号002
坑位描述:指针非空判断编程语句漏逻辑取反感叹号 入坑场景:在一次项目代码中,某个函数入参有多个指针,再进行入参非空判断的时候,直接复制变量,然后在变量前面加”!“号,结果最后一个指针做非空的时候未加”!“号,导致逻辑直接被返回,不再往下执行,功能无法使用。 入坑语句: void mian() { char szTipConten[1] = “111111”; char *p = szTipConten; if (szTipConten) { printf(“point is NULL \n”); retur原创 2020-05-24 10:35:50 · 341 阅读 · 0 评论 -
那些年嵌入式开发c&c++入的坑号001
坑位描述:指针未初始化(即未指向内存地址)就使用 入坑场景1:直接定制的指针未初始化,然后直接操作指针。 例如: int *pInt = NULL; *pInt = 1; 入坑场景2:在结构体中定义了指针变量,忘记初始化,但是后面却直接进行使用赋值。 typedef struct _TMP_STR { int iInt; char *pChar; int *pInt; }TMP_STR; TMP_STR strTmp; strTmp.iInt = 1; snprintf(strTmp.pChar,sizeo原创 2020-05-24 10:20:11 · 288 阅读 · 0 评论 -
那些年嵌入式开发c&c++入的坑号004
坑位描述:把含十进制0的有效数据当成字符串处理导致数据被截断造成不完整 strcpy strncpy memcpy 三者区别: void *memcpy(void *s2, const void *s1, size_t n); char *strcpy(char *s2, const char *s1); char *strncpy(char *s2, const char *s1, size_t n); strcpy 是依据 ‘\0’ 作为结束判断的,如果 s2 的空间不够,则会引起原创 2020-05-24 10:56:47 · 295 阅读 · 0 评论 -
C语言例程20150817-001(平台Visual Studio 2012)
//C语言基础例程001 求前n项和 #include int signa(int n) { int i = 0,sum = 0; while(i { //i++;放在这边每次运算多加一个数,如输入3,sum = 1+2+3+4 =10;原创 2015-08-18 21:44:21 · 502 阅读 · 0 评论