[编辑本段]C中的CONST
C中CONST的使用:
const是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。
虽然这听起来很简单,但实际上,const的使用也是c语言中一个比较微妙的地方,微妙在何处呢?请看下面几个问题。
问题:const变量 & 常量
为什么下面的例子在使用一个const变量来初始化数组,ANSI C的编译器会报告一个错误呢?
const int n = 5;
int a[n];
...
- [ltp1234] push cx add si,1 ;结果的数字个数 04/09 01:58
- [ltp1234] 写的很好!! 04/08 23:48
- [游客] 我也不知道说些什么 挺一下好啦 04/03 20:50
- [e56004474] 没事的话,别坐电车。 据说。。。 03/17 18:52
- [waasmedu] 拜读!受教!! 12/21 11:18
- [chinatree] 不错,顶。 12/05 03:32
- [ljl] 晕,最后一题也没有想到。。。 12/04 14:56
- [mouse] 楼上的看错了,填空位置填inc cx,就是为了找到第一个值为0的byte 07/29 15:37
- [wbkyh] 检测点9.2中,loop s指令有问题,该指令执行后,cx=cx-1,如果cx=0,则循环结束,也就 06/28 09:32
- [游客] 结果是1,*p取得的是a的地址中的内容,也就是a的值 06/08 00:22
- [lp1989] 请教一道题: 在数据段BUF下开始已定义了信息“I LIKE IBM-PC”, 编写在屏 幕上显 12/29 13:32
- [fangaiyisheng] 飘过,很好 ,很强大! 06/18 06:05
- [游客] [ lyh1984 发表于 2009-06-26 10:39 ] 请问一下,我用DEB 07/15 10:59
- [lyh1984] 请问一下,我用DEBUG为什么调不出字符串呢?我想知道你们是怎么调的,是用CMD DEBUG吗? 06/26 10:39
- [q470393267] 我看你头像半天了,那猫和老鼠能抗啊都没有死~ 05/05 21:31
- [fangyugirl] 经过上机DEBUG,我已经知道问题在哪里了,谢谢你呀。 04/09 10:31
- [fangyugirl] 我是想问你第10章的第三个子程序,这个子程序我现在主要的问题是12666/10会产生溢出,所以我调用 04/09 09:57
- [mouse] [ wangping198611 发表于 2009-03-23 11:43 ] 03/31 10:28
- [mouse] miaozaoyang 发表于 2009-03-29 22:31 ] [ 删除留 03/31 10:23
- [miaozaoyang] 又得问你个问题了,不知道为什么,实验15 不能够正常进行,程序应该是没有任何问题的,还是操作系统的问 03/29 22:31
[2009-05-07 12:26] CONST
阅读全文 |
评论次数(1) |
浏览次数(1320) |
所属类型(C语言学习)
[2009-05-05 16:20] 关于指针的一个小例子
#include <stdio.h>
int main()
{
int *p;
int a=0;
p=&a;
*p=*p+1;
printf("%d",a);
}
知识点:指针的基础理解。
提问 :最后printf打印出的值等于多少,为什么?
附一个读取寄存器的小例子:
#include "dos.h"
main()
{
struct SREGS segs;
segread(&segs);
printf("Code segment %04x\n", segs.cs);
}...
int main()
{
int *p;
int a=0;
p=&a;
*p=*p+1;
printf("%d",a);
}
知识点:指针的基础理解。
提问 :最后printf打印出的值等于多少,为什么?
附一个读取寄存器的小例子:
#include "dos.h"
main()
{
struct SREGS segs;
segread(&segs);
printf("Code segment %04x\n", segs.cs);
}...
阅读全文 |
评论次数(3) |
浏览次数(1232) |
所属类型(C语言学习)
[2009-01-20 10:27] 可变参数函数实例
int avg(int,...);
main()
{
clrscr();
printf("arg %d",avg(5,20,30,40,50,60));
getch();
}
int avg(int num,...)
{
int i = 0;
int sum = 0;
for(i = 0; i< num;i++)
{
sum += *(int *)(_BP +6 +i*2);
}
return (int)(sum/num);
}
源:http://www.asmedu.net/cbook.jsp?index=380...
main()
{
clrscr();
printf("arg %d",avg(5,20,30,40,50,60));
getch();
}
int avg(int num,...)
{
int i = 0;
int sum = 0;
for(i = 0; i< num;i++)
{
sum += *(int *)(_BP +6 +i*2);
}
return (int)(sum/num);
}
源:http://www.asmedu.net/cbook.jsp?index=380...
阅读全文 |
评论次数(2) |
浏览次数(838) |
所属类型(C语言学习)
[2008-04-28 10:18] 【转】EXE是怎样炼成的----冰山一角
http://www.asmedu.net/blog/user/postcontent.jsp?neighborId=1575&kindLevel=1&kindId=4176&postId=3718&readSg=1
--Wednesday的学习博客...
--Wednesday的学习博客...
阅读全文 |
评论次数(0) |
浏览次数(558) |
所属类型(C语言学习)
[2008-04-28 10:16] 【转】汇编揭秘C中的参数传递
汇编揭秘C中的参数传递
文章作者:怕冷的北极熊
很多学习汇编的朋友想必对C也比较了解,因为在当前大学的课程体系里,它很有可能就是你接触到的第一门编程语言。由于对计算机的理解不够,学习时必定会遇到各种问题。有些问题是你通过思考就可以解决的,而更多的问题则是你无从思考,就好像它天生就是这样,你只要记住就OK了。然而这样的学习方式是机械的,更是没有创造力的。只有真正理解了C语言,你才有能力去驾驭它,否则它和你之间永远会隔着一层窗户纸,虽然很薄,但是你永远也捅不透。这是为什么呢?其实道理很简单,就好比在一个公司有现成的代码库可以调用,有的程序员遇到问题时,他唯一可作的就是调用代码库中的...
文章作者:怕冷的北极熊
很多学习汇编的朋友想必对C也比较了解,因为在当前大学的课程体系里,它很有可能就是你接触到的第一门编程语言。由于对计算机的理解不够,学习时必定会遇到各种问题。有些问题是你通过思考就可以解决的,而更多的问题则是你无从思考,就好像它天生就是这样,你只要记住就OK了。然而这样的学习方式是机械的,更是没有创造力的。只有真正理解了C语言,你才有能力去驾驭它,否则它和你之间永远会隔着一层窗户纸,虽然很薄,但是你永远也捅不透。这是为什么呢?其实道理很简单,就好比在一个公司有现成的代码库可以调用,有的程序员遇到问题时,他唯一可作的就是调用代码库中的...
阅读全文 |
评论次数(2) |
浏览次数(1065) |
所属类型(C语言学习)
[2008-01-14 16:28] c语言常见出错信息(转)
不用记忆,实在用得着当个表查就好了:-)
一般的情况用有限的几个英语单词大致翻译下就能找到问题在哪,常遇到的问题多犯几次错误也就记住了。
Ambiguous operators need parentheses
不明确的运算需要用括号括起
Ambiguous symbol 'xxx'
不明确的符号
Argument list syntax error
参数表语法错误
Array bounds missing
丢失数组界限符
Array size toolarge
数组尺寸太大
Bad character in paramenters
参数中有...
一般的情况用有限的几个英语单词大致翻译下就能找到问题在哪,常遇到的问题多犯几次错误也就记住了。
Ambiguous operators need parentheses
不明确的运算需要用括号括起
Ambiguous symbol 'xxx'
不明确的符号
Argument list syntax error
参数表语法错误
Array bounds missing
丢失数组界限符
Array size toolarge
数组尺寸太大
Bad character in paramenters
参数中有...
阅读全文 |
评论次数(1) |
浏览次数(1330) |
所属类型(C语言学习)
[2008-01-05 17:44] c语言经典实例:八皇后问题
在一个8×8国际象棋盘上,有8个皇后,每个皇后占一格;要求皇后间不会出现相互“攻击”的现象,即不能有两个皇后处在同一行、同一列或同一对角线上。问共有多少种不同的方法。
*问题分析与算法设计
这是一个古老的具有代表性的问题,用计算机求解时的算法也很多,这里仅介绍一种。
采用一维数组来进行处理。数组的下标i表示棋盘上的第i列,a的值表示皇后在第i列所放的位置。如:a[1]=5,表示在棋盘的第一例的第五行放一个皇后。
程序中首先假定a[1]=1,表示第一个皇后放在棋盘的第一列的第一行的位置上,然后试探第二列中皇后可能的位置,找到合适的位置后,再处理后续的各列,这样通过各列的反...
*问题分析与算法设计
这是一个古老的具有代表性的问题,用计算机求解时的算法也很多,这里仅介绍一种。
采用一维数组来进行处理。数组的下标i表示棋盘上的第i列,a的值表示皇后在第i列所放的位置。如:a[1]=5,表示在棋盘的第一例的第五行放一个皇后。
程序中首先假定a[1]=1,表示第一个皇后放在棋盘的第一列的第一行的位置上,然后试探第二列中皇后可能的位置,找到合适的位置后,再处理后续的各列,这样通过各列的反...
阅读全文 |
评论次数(0) |
浏览次数(466) |
所属类型(C语言学习)
[2008-01-02 18:25] 【转】汇编揭秘C中的参数传递
汇编揭秘C中的参数传递
文章作者:cook702
很多学习汇编的朋友想必对C也比较了解,因为在当前大学的课程体系里,它很有可能就是你接触到的第一门编程语言。由于对计算机的理解不够,学习时必定会遇到各种问题。有些问题是你通过思考就可以解决的,而更多的问题则是你无从思考,就好像它天生就是这样,你只要记住就OK了。然而这样的学习方式是机械的,更是没有创造力的。只有真正理解了C语言,你才有能力去驾驭它,否则它和你之间永远会隔着一层窗户纸,虽然很薄,但是你永远也捅不透。这是为什么呢?其实道理很简单,就好比在一个公司有现成的代码库可以调用,有的程序员遇到问题时,他唯一可作的就是调用代码库中的功能模...
文章作者:cook702
很多学习汇编的朋友想必对C也比较了解,因为在当前大学的课程体系里,它很有可能就是你接触到的第一门编程语言。由于对计算机的理解不够,学习时必定会遇到各种问题。有些问题是你通过思考就可以解决的,而更多的问题则是你无从思考,就好像它天生就是这样,你只要记住就OK了。然而这样的学习方式是机械的,更是没有创造力的。只有真正理解了C语言,你才有能力去驾驭它,否则它和你之间永远会隔着一层窗户纸,虽然很薄,但是你永远也捅不透。这是为什么呢?其实道理很简单,就好比在一个公司有现成的代码库可以调用,有的程序员遇到问题时,他唯一可作的就是调用代码库中的功能模...
阅读全文 |
评论次数(2) |
浏览次数(779) |
所属类型(C语言学习)
[2008-01-02 13:19] 声明与函数、函数指针[转]
在很多情况下,尤其是读别人所写代码的时候,对 C语言声明的理解能力变得非常重要,而C语言本身的凝练简约也使得C语言的声明常常会令人感到非常困惑,因此,在这里我用一篇的内容来集中阐述一下这个问题。
问题:声明与函数
有一段程序存储在起始地址为 0的一段内存上,如果我们想要调用这段程序,请问该如何去做?
答案
答案是 (*(void (*)( ) )0)( )。看起来确实令人头大,那好,让我们知难而上,从两个不同的途径来详细分析这个问题。
答案分析:从尾到头
首先,最基本的函数声明: void function (paramL...
问题:声明与函数
有一段程序存储在起始地址为 0的一段内存上,如果我们想要调用这段程序,请问该如何去做?
答案
答案是 (*(void (*)( ) )0)( )。看起来确实令人头大,那好,让我们知难而上,从两个不同的途径来详细分析这个问题。
答案分析:从尾到头
首先,最基本的函数声明: void function (paramL...
阅读全文 |
评论次数(0) |
浏览次数(861) |
所属类型(C语言学习)
[2008-01-02 12:08] [转]任意个数里找出最大的前10个
任意个数里找出最大的前10个,欢迎大家一起来优化
#include<stdio.h>void bubbleSort(int *sortArray,int SIZE){ int i,j,temp,flag; for(i=0;i<SIZE-1;i++) { flag=0; for(j=0;j<SIZE-i-1;j++) if(sortArray[j]<sortArray[j+1]) { ...
#include<stdio.h>void bubbleSort(int *sortArray,int SIZE){ int i,j,temp,flag; for(i=0;i<SIZE-1;i++) { flag=0; for(j=0;j<SIZE-i-1;j++) if(sortArray[j]<sortArray[j+1]) { ...
阅读全文 |
评论次数(1) |
浏览次数(528) |
所属类型(C语言学习)