C语言的指针问题

函数定义如下:voidAT24CXX_Write(u16WriteAddr,u8*pBuffer,u16NumToWrite){while(NumToWrite--){A... 函数定义如下:

void AT24CXX_Write(u16 WriteAddr,u8 *pBuffer,u16 NumToWrite)
{
while(NumToWrite--)
{
AT24CXX_WriteOneByte(WriteAddr,*pBuffer);
WriteAddr++;
pBuffer++;
}
}
这里的u8 *pBuffer,是定义pBuffer为指针变量吧
那主程序中
const u8 TEXT_Buffer[]={"WarShipSTM32 IIC TEST"};
调用该函数
AT24CXX_Write(0,(u8*)TEXT_Buffer,SIZE);
这里实参TEXT_Buffer不是数组的首地址吗?那前面加上(u8*)不就是数组里的首元素吗?而函数定义的形参是定义成的指针变量啊。可实参现在已经不是指针变量了啊?
求大神给解答下,指针这一直搞不懂...我理解的哪块不对
展开
 我来答
vlmsx
推荐于2018-04-21 · TA获得超过432个赞
知道小有建树答主
回答量:728
采纳率:0%
帮助的人:101万
展开全部
(u8*)TEXT_Buffer这是强制类型转换,把TEXT_Buffer强制转换成u8*类型
百度网友8b81db7
2014-03-11 · TA获得超过132个赞
知道小有建树答主
回答量:184
采纳率:100%
帮助的人:132万
展开全部
数组名就是他的首地址,也相当于指针在编译器编译的过程中数组会退化为指针,而且你需要注意的是*p定义的时候是char *p,a = 2,赋值的时候是p = & a;也就是说*p= a;因此p才是指针而不是*p,p中存放的是变量的地址;*p表示的是p的地址中存放的数据。在赋值过程中往往是定义一个数组a[10] = "hello";p = a;例如:strlen(...)是函数,要在运行时才能计算。参数必须是字符型指针(char*), 且必须是以'\0'结尾的。当数组名作为参数传入时,实际上数组就退化成指针了。

虽然关联不大但还是推荐你看一下这篇博文,有关sizeof和strlen的,介绍了不少指针和数组的定义和用法,望采纳http://blog.csdn.net/niushuai666/article/details/7677210多逛逛csdn和chinaUnix的博客很有益处,华清远见的博客就不错,因为他是一个培训机构,里面都是各位老师总结的心得虽然是嵌入式的和你学的可能不一样但是可以借鉴一下里面关于C语言的,或者你看下其它人的博客也行,欢迎一起学习交流
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cdyzxy
2014-03-11 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:85%
帮助的人:3760万
展开全部
函数的参数描述部分不是开设变量,而是描述得到的数据的类型。
调用的过程是这样的:
调用者将字符串TEXT_Buffer的首地址入栈,再入栈一个整型数,然后调用AT24CXX_Write
AT24CXX_Write将栈中的那个首地址数据当成指针变量pBuffer来用,相当于设置该变量在栈中的哪个位置,同理NumToWrite变量也在栈中。
然后用这两个变量进行计算。
函数返回时,系统会自动丢弃这两个临时的数据,那么临时的变量也被舍弃了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
CorruptDemon
2014-03-11
知道答主
回答量:12
采纳率:0%
帮助的人:9.2万
展开全部
首先你要搞懂什么是数组什么是指针。对于数组来说其实是一块分配好的内存空间,数组名就是这块空间的首地址。而指针是用来保存地址的变量。所以(u8*)TEXT_Buffer是TEXT_Buffer的地址,因此实参也是这块空间的地址,而形参pBuffer保存的内容也是TEXT_Buffer的地址。其实你只要知道指针是用来保存地址的,数组名其实是内存地址应该就能理解了。关于数组和指针还有一些可以说的,就是关于[ ] 和 *是怎么解引用的。不过再说就复杂了………………
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
彭珂的课堂
2021-03-04 · IT资讯、技能教学、学习经验分享。
彭珂的课堂
采纳数:98 获赞数:343

向TA提问 私信TA
展开全部

C语言_071_指针的定义和使用_上

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式