|
[急]好奇怪 C programming 米有BUG 不过 display 有 BUG
[复制链接]
|
|
发表于 15-9-2007 04:33 PM
|
显示全部楼层
原帖由 tensaix2j 于 15/9/2007 16:30 发表 
读书时学的比basic 还basic..
工作时遇到高人才能学到更多。。。
erm,其实我也不晓得programming C++能做到什么,
我学了,就只是处理些数学问题,
有些时候要算很多个iteration,很多小数点的答案,
就写个程式来计算而已。
所以就原地踏步,没有进步到,用来用去都是basic. |
|
|
|
|
|
|
|

楼主 |
发表于 15-9-2007 06:49 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 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
|
显示全部楼层
|
|
|
|
|
|
|
发表于 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?请教~ |
|
|
|
|
|
|
|
发表于 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
|
显示全部楼层
|
|
|
|
|
|
| |
本周最热论坛帖子
|