您的位置:首页 > 编程语言 > C语言/C++

c语言指针问题小结

2017-03-25 08:44 288 查看
最近使用指针的时候遇到了一些问题,在这里做一个简单的总结,加深下对指针的认识。数组和指针大部分情况下可以互换使用,但是有些时候却是必须得区别对待,否则一不小心就会出错。

比如下面四个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语言