![](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 · 368 阅读 · 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 · 380 阅读 · 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 · 335 阅读 · 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 · 278 阅读 · 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 · 292 阅读 · 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 · 495 阅读 · 0 评论