本文目录一览:
c语言编写的程序运行不稳定
...
问题不是C语言,是楼主的程序有问题,根据LZ的现象,多半是栈溢出,比如非法访问、数组过大、修改字符常量...
C语言 程序能运行,但是有时运行中间会崩溃,一般因为什么?怎么解决?
程序设计的很重要一点就是要保证程序的稳定性,运行时崩溃就是稳定性不够,一般比较常见的就是数据类型不符、内存泄漏等错误造成的。还有,C语言的稳定性上一般也是比较差的
关于c语言程序的稳定性,求大神帮忙啊
在设计程序的时候考虑各种有可能的错误和异常,
因为用户并不一定会严格按照程序员的设定来使用程序,好比输入数字,但用户输入了字母,这些都需要在程序中考虑(可以判别输入,不合法则提示继续输入)。
c++引入的异常机制,来处理程序异常。c的话,要自己仔细考虑,编写健壮、稳定的程序了。
当然,测试也很重要,写完程序要找一些容易出错的来测试(每一个软件开发都有内部测试阶段),然后完善代码
C语言指针问题
1.
这里根本就没有赋值的语句,所以没有复制。
(*s)(*t)(*t++==*s++) 这个条件就是没到s的结束且没到t的结束且*t == *s,就循环,t和s的指针都往后移。
2.
p是指针数组,就是有两个指针
for(i=0;i2;i++) p[i]=ch[i];这个就是赋值给p指针,其中p[0] 等于ch二维数组的第0行的首地址,p[1]等于ch二维数组的第1行的首地址
for(i=0;i2;i++) //循环p指针数组
for(j=0;p[i][j]'\0';j+=2) //间隔j+=2循环p[i]指向的数组,当i=0时就是ch二维数组的第0行,i=1时就是ch二维数组的第1行
s=10*s+p[i][j]-'0'; //就是ch的第i行第j列减去'0',这样要注意,这是个字符,ASCii是0x30,'6' - '0' = 0x36-0x30 = 0x06
//所以答案是6385
3.
数组变量实际上就是地址
str是这个数组的首地址,相当于str[0]
str+1就是str[1],
strcat(p1,p2) 返回就是把p2接在p1后就成了"abcabc
strcpy(str+1,strcat(p1,p2))就是把strcat(p1,p2)的返回复制到str+1上,就是从str[1]开始
原来str[50]="abc";从str[1]开始就是把b及后面的覆盖就成了aabcabc