LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1033|回复: 3

现在正在看C++,请教一个问题,关于动态分配。

[复制链接]
发表于 2005-6-24 02:02:04 | 显示全部楼层 |阅读模式
我还有没有看到这部分的内容,不过想提前了解一下。

代码如下:
#include <iostream>
using namespace std;
int main()
{
int *a=new int[10];
int i;
for(i=0;i<10;i++){
  *a=i;
  a++;
}
for(i=0;i<10;i++){
  a--;
  cout<<*a<<'\n';
}
delete [] a;
return 0;
}

假如我定义了一个指针,例如 *p=new int(0);
那么for(;*p<10;*p++) 这符合语法么;
还有使用指针做为数组下标 *a[*p] 引用数组元素,这符合语法吗,*a[*p]会碰到运算符的优先级问题吧。
发表于 2005-6-24 11:06:31 | 显示全部楼层
只要编译器能通过,一般没有太大的语法问题。但程序的逻辑错误是不可能仅仅靠编译器来检查的。
回复 支持 反对

使用道具 举报

发表于 2005-6-26 14:22:36 | 显示全部楼层
Post by 冒泡
我还有没有看到这部分的内容,不过想提前了解一下。

代码如下:
#include <iostream>
using namespace std;
int main()
{
int *a=new int[10];
int i;
for(i=0;i<10;i++){
  *a=i;
  a++;
}
for(i=0;i<10;i++){
  a--;
  cout<<*a<<'\n';
}
delete [] a;
return 0;
}

假如我定义了一个指针,例如 *p=new int(0);
那么for(;*p<10;*p++) 这符合语法么;
还有使用指针做为数组下标 *a[*p] 引用数组元素,这符合语法吗,*a[*p]会碰到运算符的优先级问题吧。



呵呵,应该符合语法,不过不同的编译器可能处理不一样,即使通过编译,取到的值也是乱码,甚至导致系统挂掉,呵呵,所以指针这个东西要极度小心
回复 支持 反对

使用道具 举报

发表于 2005-6-27 23:42:55 | 显示全部楼层
P的指针类型要写明白!!
for语句是符合标准的!
数组引用也没有问题!

指针正是c/c++  语言的精妙之处!一定要用,但要有良好的初始化习惯!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表