佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

12
返回列表 发新帖
楼主: keatliang2005

[急]好奇怪 C programming 米有BUG 不过 display 有 BUG

[复制链接]
发表于 15-9-2007 04:33 PM | 显示全部楼层
原帖由 tensaix2j 于 15/9/2007 16:30 发表
读书时学的比basic 还basic..
工作时遇到高人才能学到更多。。。


erm,其实我也不晓得programming C++能做到什么,
我学了,就只是处理些数学问题,
有些时候要算很多个iteration,很多小数点的答案,
就写个程式来计算而已。

所以就原地踏步,没有进步到,用来用去都是basic.
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 15-9-2007 06:49 PM | 显示全部楼层

回复 #19 湖俊 的帖子

读 IT 的 这个是 偶的 first semester, 以前 自修过 Visual Basic 觉得 C 比较 直接 咯
不过 比较 不 user friendly 咯, 以为 下个 SEM 会 是 VB的 哪里知道 silivers 换了 变成 VB.NET
眼花缭乱 的 VB.NET 偶 怕怕
回复

使用道具 举报

发表于 15-9-2007 07:15 PM | 显示全部楼层
原帖由 keatliang2005 于 15/9/2007 18:49 发表
读 IT 的 这个是 偶的 first semester, 以前 自修过 Visual Basic 觉得 C 比较 直接 咯
不过 比较 不 user friendly 咯, 以为 下个 SEM 会 是 VB的 哪里知道 silivers 换了 变成 VB.NET
眼花缭乱 的 VB.NET ...


呵呵,这就相当可怜。

我东西都是学basic,半桶水不到家。
C++后,
也学了Perl,PHP,JavaScript,databse和HTML这些,用来做网页。
回复

使用道具 举报

 楼主| 发表于 15-9-2007 11:56 PM | 显示全部楼层
原帖由 湖俊 于 15-9-2007 03:57 AM 发表
2种写法
1
改成:

#include
#include
#include
#include

main()
{
      int arr[10]={4,5,5,6,7,8,9,9,9,10};
      int i, numPos, u;
      int counterArr[13];
      
      
      ...

原来 array 米有 initiate value
回复

使用道具 举报

 楼主| 发表于 15-9-2007 11:57 PM | 显示全部楼层

回复 #23 湖俊 的帖子

哇哈 PERL 是 web application ?

、你自修 都蛮多的麻。。。。 厉害
回复

使用道具 举报

发表于 16-9-2007 12:39 AM | 显示全部楼层
原帖由 keatliang2005 于 15/9/2007 23:57 发表
哇哈 PERL 是 web application ?

、你自修 都蛮多的麻。。。。 厉害


er。。难道Perl不是做web application的咩?

原帖由 keatliang2005 于 15/9/2007 23:56 发表

原来 array 米有 initiate value


array应该就好像pointer那样,没有给value,就只有point去某个address.
回复

使用道具 举报

Follow Us
发表于 16-9-2007 01:34 AM | 显示全部楼层
原帖由 湖俊 于 16-9-2007 12:39 AM 发表

array应该就好像pointer那样,没有给value,就只有point去某个address.




array 对我来说是只一片contiguous memory of n units,with 每个unit of x size , depends on 你的data type

话说回来,你要initialize 可以用memset.
回复

使用道具 举报

发表于 16-9-2007 02:59 AM | 显示全部楼层
原帖由 tensaix2j 于 16/9/2007 01:34 发表




array 对我来说是只一片contiguous memory of n units,with 每个unit of x size , depends on 你的data type

话说回来,你要initialize 可以用memset.


怎样用memset?请教~
回复

使用道具 举报


ADVERTISEMENT

发表于 16-9-2007 10:48 AM | 显示全部楼层
char a[100];
memset(a, 0 , 100 );   //set 100 units of (size 1 byte) to 0

short int b[100]
memset(b, 0 , 100 * sizeof(short int));   //set 100 units of (size 2 bytes) to 0

int c[100]
memset(c , 0 , 100 * sizeof(int) );       //set 100 units of (size 4 bytes) to 0



char *d;
d = malloc (100);     // allocate 100 units of size 1 byte
memset( d, 0 ,100);    // set 100 units of size 1 byte to 0

char e[100];
memset ( e + 56 , 0 , 30);    //set 30 units of size 1 byte to 0 starting from unit 56th to unit 86th...

[ 本帖最后由 tensaix2j 于 16-9-2007 10:56 AM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 16-9-2007 04:01 PM | 显示全部楼层

回复 #29 tensaix2j 的帖子

请问 这是 pure C 的写法吗 ? 很怕 Mix 到 C++ 的写法。。。
考试 写错 回扣分的。。。。
回复

使用道具 举报

 楼主| 发表于 16-9-2007 04:02 PM | 显示全部楼层

回复 #26 湖俊 的帖子

偶 不知道PERL是 哈米 来的 所以 就问问下
回复

使用道具 举报

发表于 16-9-2007 04:24 PM | 显示全部楼层
原帖由 tensaix2j 于 16/9/2007 10:48 发表
char a[100];
memset(a, 0 , 100 );   //set 100 units of (size 1 byte) to 0

short int b[100]
memset(b, 0 , 100 * sizeof(short int));   //set 100 units of (size 2 bytes) to 0

int c[100]
mem ...


明白了。

只是到现在还很混淆,也不懂怎样善用memory。

我看很多书上写,写好的program要善用memory,是什么意思?
就是不要浪费memory?
不要写太多loop那些?
回复

使用道具 举报

发表于 16-9-2007 04:32 PM | 显示全部楼层
原帖由 keatliang2005 于 16/9/2007 16:02 发表
偶 不知道PERL是 哈米 来的 所以 就问问下


其实C是C++的前身,so far我只看到c++的差别是
std::cin   -- > scanf
std::cout  -- > printf

其他基础的syntax就不懂有没有分别。

——————————————————————————

Perl我也不懂怎样讲,是个scripting language吧。
不必compile,是靠line by line interprete。

如果在c++,有些错syntax或者有bug,compiler就不能compile,
也不能明确指出那里有问题,最多给一些模糊的提示。
好像你忘记写semicolon,有时候很麻烦去检查的。
现在用多了,就靠经验来抓。
我是不会用里面那种step over debugger啦。

perl,是line by line去翻译成电脑语言,
就是说如果你前面100行写对,那么这100行的output还是会出现。
到了101行有问题,interpreter就停下,
很正确地告诉你是第几行遇到问题所以不能继续。

很多那些scripting langguage都是酱,php也是。
也学过Matlab,一种工程和数学的programming软件,也是line by line来run的。
其实很方便下,各擅胜场
回复

使用道具 举报

发表于 16-9-2007 06:46 PM | 显示全部楼层
原帖由 湖俊 于 16-9-2007 04:24 PM 发表


明白了。

只是到现在还很混淆,也不懂怎样善用memory。

我看很多书上写,写好的program要善用memory,是什么意思?
就是不要浪费memory?
不要写太多loop那些?



有时,为了要省memory,就得牺牲一点processing..
如果不要那么多 processing,就得牺牲一点memory..

对以前的programmer来说,每一byte都很珍贵。。所以它们没办法之下只好牺牲processing...但现在我们的ram 很大,那几byte是没什么所谓的。。

我记得以前做过一个program..是一个 binary file filter..每一个record 的最前两个byte是指示接下来的几个byte是属于这个record的。。

我第一次写时,我是这样写

do
  读两个byte 来知道接下来还有n个byte
  malloc(n 个 byte)的buffer
 读 n 个byte,放进那 n 个byte 的buffer
  处理
  free 掉那 n 个 byte.
loop

结果我被教训了。。

因为,他说太浪费 processing 了。。
他的做法是

先 malloc 64k byte 的buffer
do
  读两个byte 来知道接下来还有n个byte
  读 n 个byte,放进那 64k byte 的buffer
  处理
loop
free 掉那 64k  byte.

[ 本帖最后由 tensaix2j 于 16-9-2007 07:12 PM 编辑 ]
回复

使用道具 举报

发表于 16-9-2007 07:00 PM | 显示全部楼层
原帖由 湖俊 于 16-9-2007 04:32 PM 发表


其实C是C++的前身,so far我只看到c++的差别是
std::cin   -- > scanf
std::cout  -- > printf

其他基础的syntax就不懂有没有分别。

——————————————————————————

Pe ...




是的
但有一点就是interpreted script 会比compiled language 慢很多。

但interpreted script 有一个好处就是它可以用eval()来 on the fly的把 string 或 text 变成 code 来执行。。。所以很dynamic

而 compile language 不可能 on the fly 的把 string 或 text compile 成 binary 来执行。。。。

所以,如果你写compiled language,然后又要比较dynamic 的话就只好用 function pointer 咯。。。

[ 本帖最后由 tensaix2j 于 16-9-2007 07:02 PM 编辑 ]
回复

使用道具 举报

发表于 16-9-2007 07:05 PM | 显示全部楼层
原帖由 keatliang2005 于 16-9-2007 04:01 PM 发表
请问 这是 pure C 的写法吗 ? 很怕 Mix 到 C++ 的写法。。。
考试 写错 回扣分的。。。。


是的. 那是 C 来的
回复

使用道具 举报


ADVERTISEMENT

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

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 25-9-2025 07:25 PM , Processed in 0.151711 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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