广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 3160 个阅读者
 
<< 上页  1   2  >>(共 2 页)
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
0951020223 手机
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x2 鲜花 x64
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

x.size <---在这段程式的意思...应该是这个x.ptr大小
x.ptr   <---可以说是阵列...不过他是宣告指位器(指位器是我的讲法...在书上..应该是讲指标)

再main有一段如下...

vector x;   <----建立以vector结构体建立一ㄍx的结构体
x.ptr=NULL; <---指位器归零 (因为NULL=0)
x.size=0;     <---将x.size归零 (也可以写成x.size=NULL)

vec_creat(x,10);   <---你就是卡在这里....
这ㄍvec_creat函式原型是这样...--->void vec_creat(vector& v, int s);
基本上....x.size要存入int s
因为程式跑到以下这段...
for(int i=0; i<x.size;i++)
  vec_set(x,i,i*i);

就要跑回圈了....
而你x.size=0....当然到了for这一段就会跳到vec_print执行里面的cout来输出....
但是...你for回圈是要设定x里面的值阿....
所以...你在执行到vec_creat就要设定x.size了...
到了for就会以x.size来决定...回圈要跑几次....
你的x.size=0....当然回圈不会有动作搂...
而这ㄍ回圈里面的程式就是来设定资料的ㄚ
你里面都没有资料....当然就没东西可以输出搂...

这样说明...了解ㄇ??

此文章被评分,最近评分记录
财富:30 (by codeboy) | 理由: 说明的很清楚喔~^^



献花 x0 回到顶端 [10 楼] From:台湾中华电信 | Posted:2005-05-11 13:49 |
jasonh920 手机
个人头像
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x3 鲜花 x50
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

[quote]下面是引用codeboy于2005-05-11 11:25发表的 :

这是因为程式之前宣告了一个结构
复制程式
struct vector { //定义结构
  int* ptr;
.......[/quote]
=================================================
复制程式
 vector x;
 x.ptr=NULL;
 x.size=0;
 
 vec_creat(x,10);
 for(int i=0; i<x.size;i++)   //x.size不是已经等于零ㄌ,那为什么还要这样设定ㄚ.
   vec_set(x,i,i*i);

我有去作单步执行的动作,但我ㄉ程式却都不会进入vec_sec(x,i,i*i)这个函式...
各位大大帮我解释一下好不好...
拜托拜托.. 表情 表情


献花 x0 回到顶端 [11 楼] From:台湾中华电信 | Posted:2005-05-11 14:03 |
0951020223 手机
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x2 鲜花 x64
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用jasonh920于2005-05-11 14:03发表的 :

[/code]=================================================
[code] vector x;
.......

你在六楼贴的程式码...

我用组译器去Run...
在vec_creat执行之后....x.size是0....

我不清楚你怎ㄇ弄的....反正在vec_creat函式里面...要多加一行v.size=s
到了for回圈才会动作....

如果我没在vec_creat函式里面加一行v.size=s
那for回圈不会动作....

看来你的c要多用功一点喔...

我有去作单步执行的动作,但我ㄉ程式却都不会进入vec_sec(x,i,i*i)这个函式...
就是因为你的x.size是0...for才不会动作..


[ 此文章被0951020223在2005-05-11 15:03重新编辑 ]


献花 x0 回到顶端 [12 楼] From:台湾中华电信 | Posted:2005-05-11 14:57 |
jasonh920 手机
个人头像
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x3 鲜花 x50
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用0951020223于2005-05-11 14:57发表的 :

就是因为你的x.size是0...for才不会动作..


复制程式
#include <cstdlib>
#include <iostream>

using namespace std;

struct vector { //定义结构
  int* ptr;
  int  size;
};

//以下为你必须实现功能的函数
void vec_creat(vector& v, int s); //建立vector
void vec_resize(vector& v, int s); //重新调整vector 大小
int vec_get(vector& v,int p);//取出数值
void vec_set(vector& v, int p, int val); //设定数值(指定array位置作数值设定)
void vec_clean(vector& v); //清除vector


//以下为已完成功能的函数(你只需使用下列函数,不要对下列函数修改)
void vec_set(vector& v,int val); //设定数值(对全部array作设定)
void vec_print(vector& v); //列印

//主程式

int main(int argc, char *argv[])
{
 vector x;
 x.ptr=NULL;
 x.size=0;
 
 vec_creat(x,10);
 int i=0;
 for(int i=0; i<x.size;i++)
   vec_set(x,i,i*i);
 
 vec_print(x);
 
 vec_set(x,99);
 vec_print(x);
 
 system("PAUSE");
 return 0;
} 

//===============
void vec_print(vector& v){
   for(int i=0; i<v.size;i++)
     cout<<vec_get(v,i)<<" ";
   cout<<endl;
}

void vec_set(vector& v,int val) {
   for (int i=0; i<v.size;i++)
     v.ptr[i]=val;
}
//=============================
void vec_creat(vector& v,int s){
        v.ptr = new int[s];
        v.size = s;
        memset(v.ptr, 0, sizeof(int)*v.size); 
}

void vec_resize(vector& v,int s){
     int s1,v1;
      v.ptr =new int[s];
     for (int i=0;i<s;i++)
     v.ptr[s1]=v.ptr[s];
      delete [] v.ptr;
       v.ptr[s];  
}

int vec_get(vector& v,int p){
     return v.ptr[p];
}

void vec_set(vector& v,int p,int val){ //指定位置设定数值                       
   v.ptr[p]=val;     
}

void vec_clean(vector& v){
     if (v.ptr=NULL)
     delete [] v.ptr;
     v.ptr=NULL;
}      



这是我刚刚跑出来的答案,虽然是跟助教的答案一样.
但我总觉得要ㄉ好像并不是这样子内... 表情
好像还要有些条件. 表情

其实说老实话,我真ㄉ一点都看不懂我自己在写什么.
尤其是 ?.ptr   ?.size
转来转去,实在也是不知道该如何ㄉ使用.

真ㄉ很感谢各位大大ㄉ帮忙...
尤其是0951020223,codeboy和唐老鸭.
这几位大大的大力协助.....
谢谢您们啰!!


[ 此文章被jasonh920在2005-05-11 15:35重新编辑 ]

此文章被评分,最近评分记录
财富:10 (by codeboy) | 理由: 有问题再继续提没关系...这里欢迎你来发问喔~^^


献花 x0 回到顶端 [13 楼] From:台湾中华电信 | Posted:2005-05-11 15:30 |

<< 上页  1   2  >>(共 2 页)
首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.058436 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言