发布网友 发布时间:2022-04-25 13:14
共4个回答
热心网友 时间:2024-02-03 14:27
首先这个不叫类模板,而应该叫函数模板,专门用来生产函数。
*data不是指针,而data才是指针,*data是表示data指针所指向的值
T *data表示一个形式参数,然后就可以在函数体内使用data这个指针变量了,这里扮演的角色就是类型为T的一个数组的首地址
显然这是一个求和的函数,
s就是总和,
while(*data) s+=*data++;
由于后缀自加运算优先级高于*(指针),所以就相当于:
while(*data!=0)s=s+*(data++);
也就是说,初始s=0,然后每次将data所指向的T类型值加到s,并且将data这个指针指向下一个地址,直到data所指向的T类型值为0,循环结束追问哦,谢谢,那这个while(*data)里面的*data都是*data!=0的意思吗?还是只是在这里是这样?
追答嗯,while条件判断,0就是false,非0就是true
while在true的条件下才执行循环,也就是*data要非0,*data!=0
热心网友 时间:2024-02-03 14:27
*data 是指针,指向存储data的地址。data的类型是T,具体跟你实例化这个模板时选择的类型有关
s的类型也是T
就你这个调用来看,T的类型是int
int x[]={2,4,6,8,0,12,14,16,18};定义了一个int型数组,x是数组首个元素的地址,在调用total时便将T实例化为int了
热心网友 时间:2024-02-03 14:27
data其实就是T类型的指针变量,*data就是date指针指向的对象,T *data这里是在定义一个T类型的形参指针变量data,是代表T s=0;这里定义的s变量
热心网友 时间:2024-02-03 14:28
不好意思 我也不懂