学习c++的朋友们,请帮忙看看我这个用这指针的main()

来源:百度知道 编辑:UC知道 时间:2024/07/01 06:29:49
int main()
{
int i,voild,s=1;
int ch[8],*n;
cout<<"Please enter 8 bit binary number:";
cin>>new ch[8]; //错误
n=&ch[8];//错误
if(*n==1)
for(i=7;i<=7;i++)
{s=power(2,i); //错误
voild+=s;}
cout<<"value is:"<<voild;
}
double power(double x,int n)
{
double vol=1.0;
while(n--)
vol*=x;
return (vol);
}

这是一个2进制转化10进制的函数。我想用数组装载输入的八位2进制数用new动态分配下空间来存放这8个数,然后用指针指向 数组中的具体数值,从最左边开始一次指到最右边,如果是‘1’那么就调用power();然后把结果累加起来。
有一个心结就是我用指针的时候总是出问题,书上的例子全能看明白,可是自己写 的程序就是有错误,我在写些例子请明白的帮我详细解释下:
char ch[10];
int *n;
*n=ch[10];
*n=&ch[10];
n=ch[10];
n->ch[10];
n=&ch[10];
我可能是书没看太明白,反正是网络也不怕出丑 呵呵
麻烦各位了;我只有30分先给10分吧 顺便问下怎么能加分(回答别的问题我是够呛了)
太谢谢你们了 !
那个应该是for(i=7;i<=7;i--)
感谢最佳答案,谢谢大家,我已经有2个星期没看有人给我解释问题了。我在这个公司成天自习,遇上不明白的也人家也不管1个月后能行就留不行就走,真没想到这么快就有人

如果用new来申请空间的话,必须有实例化的指针变量。
比如我们可以这样写:
char *p = new char[8];
int *ch = new int[8];
含义是,定义一个char指针p,并为其申请8个字符的数组空间,p指向这段空间的首地址。ch类似。

错误的写法:
cin>>new ch[8];
原因:
(1) 首先,C/C++中,没有ch类型。new操作符后必须紧跟一个数据类型,比如new int,但是不能紧跟某变量名。
(2) 其次,从上面的例子我们可以看到,new char[8]的返回值应该是一个char指针,而cin是将控制台的用户输入存放到某个变量中,C/C++中不允许直接给指针赋值,因此不能这么写。
(3) 不可以使用cin一次性对某数组赋值,必须外套for/while/do-while循环来进行赋值操作。

正确的写法:
int *ch = new int[8];
for(int i=0;i<8;i++) cin>>ch[i];

错误的写法:
n=&ch[8];
首先我们要明确自己要干什么。写这句的时候,我们实际的意思是想将n(整型指针)指向ch数组的尾单元(第8个元素),但是实际上n=&ch[8]的含义是:将n指向ch数组的第9个元素。

正确的写法:
n = &ch[7];
或者
n = ch;

错误的写法:
for(i=7;i<=7;i++)
这样写的含义是:初始i=7,当i<=7满足时,执行循环体,每次执行结束时i++。
那么最终执行循环体的次数仅仅为1次。

正确的写法:
for(i=0;i<8;i++)

错误的写法:
int s=1; s=power(2,i);
源程序中,power的返回值类型为double,但是这里s的类型为int,虽然可以将double值赋给int类型的变量,但是在此之前需要进行强