问题描述
#include<iostream>#include<string.h>#include<stdlib.h>using namespace std;class Test3{public : Test3(); void change();private : int a[100]; int n =0; int *p;};Test3::Test3(){}void Test3::change(){ int i = 0, j = 0; cin >> n; for (; i < n; i++){cin >> a[i]; } p = a; for (; i < n; i++){if (*(p + i) == 0){ for (j = i; j < n - 1; j++){*(p + j) = *(p + j + 1); } *(p + n - 1) = 0; n--;}cout << a[i]; }}int main(){ Test3 t(); t.change(); system('pause'); return 0;}以上代码是实现3.有一个数组int a[n],使用指针操作实现函数
int myfunc(int p,int n);将a中的0都移动至数组末尾,将非0的移至开始(保持原来的顺序不变)例如:A原来是1,0,3,4,0,-3,5经过myfunc处理后为:1,3,4,-3,5,0,0。这个功能的。在
t.change();
这行代码提示表达式必须包含类类型,这句话是什么意思?如何解决呢?
问题解答
回答1:Test3 t();不能这么写
你这么写等于声明了一个函数t,它返回Test3的类型。
如果你想表达的是“定义一个Test3类型的变量,以它的默认构造函数”,那么去掉括号即可。

