c语言指针问题小结
2017-03-25 08:44
288 查看
最近使用指针的时候遇到了一些问题,在这里做一个简单的总结,加深下对指针的认识。数组和指针大部分情况下可以互换使用,但是有些时候却是必须得区别对待,否则一不小心就会出错。
比如下面四个test例子,test1是对的,test2是错的,指针指向一个地址的情况,因为GetUartData()返回一个指针地址,而数组初始化定义的时候,是已经明确指向了一个内存地址的,所以无法将一个新的指针地址赋给一个数组,只能是让另一个指针指向该地址。
另一个是给指针赋值的问题,如下面的test例子,test3是错的,test4是对的,当定义一个指针时,首先得赋予它为一个空指针,如果需要给指针赋值,必须先初始化指针,让它指向一个特定的内存地址后,才可以给它赋值。
比如下面四个test例子,test1是对的,test2是错的,指针指向一个地址的情况,因为GetUartData()返回一个指针地址,而数组初始化定义的时候,是已经明确指向了一个内存地址的,所以无法将一个新的指针地址赋给一个数组,只能是让另一个指针指向该地址。
char data[10]; char *GetUartData(void) { return data; } void test1(void) { char *p= NULL; *p = GetUartData(); } void test2(void) { char *p= NULL; char temp[10]; temp = GetUartData(); }
另一个是给指针赋值的问题,如下面的test例子,test3是错的,test4是对的,当定义一个指针时,首先得赋予它为一个空指针,如果需要给指针赋值,必须先初始化指针,让它指向一个特定的内存地址后,才可以给它赋值。
char data[10]; char *GetUartData(void) { return data; } void test3(void) { char *p= NULL; memcpy(p,data,10); } void test4(void) { char *p= NULL; char temp[10]; p = temp; memcpy(p,data,10); }
相关文章推荐
- c语言指针使用的注意问题
- 【我解C语言面试题系列】003 死循环格式问题小结?
- C语言野指针问题
- C语言中指针的数据类型小结
- C语言 多维指针注意问题
- C语言中的指针参数传递小结 (2005-7-5)
- c语言初学-关于指针作为参数并改变它的值的问题
- 一道c语言指针问题!
- C语言指针问题
- 调试单片机程序中遇到的c语言指针问题
- C语言之void 指针问题
- C语言指针问题快速解惑
- C语言中关于指针,二维数组等的问题,一个有趣的发现
- c语言指针、数组问题(1)
- C语言中 数组到底是不是指针和数组作为参数问题
- 【我解C语言面试题系列】003 死循环格式问题小结?
- c语言指针问题
- C语言中一个指针传递问题的分析
- C语言 指针相关问题--调用函数实现空间动态申请
- C语言、指针的指针和野指针的问题