05 2012 档案
摘要:指向数组的指针 首先我们来看3行代码:1 int *a[10];2 int (*a)[10];3 int a[10]; 3行代码其实还是比较接近的,但是意义却是不一样的。 1、a表示的是由int *类型组成的数组,这个数组的长度为10; 2、a表示的是a是指向由10个int组成的数组类型的指针; 3、a表示的是由10个int组成的数组。 从以上的说明当中,我们可以认为[]比*的优先级要高,因此当类型会先跟[]组合,然后再与*组合。int a[10];int (*pa)[10] = &a; a是一个数组,现在使用&a将数组a的首地址复制给pa,其实&a的数值等于&
阅读全文
摘要:今天主要学习是关于指针的。 指针与地址 可以是用一元运算符&用于取一个对象的地址,格式为:p = &c,而*则是间接寻址或者间接引用。 *p = *p + 10 or *p += 10 表示*p的值增加10,但是在是用如: (*p)++ 时要注意,如果没有括号,则是对p进行加1运算,而不是对p指向的对象进行加1运算。 指针与数组 声明: int a[10]; int *p; p = &a[0]; 表示指针pa指向数组a的第0个元素,也就是p的值为数组a[0]的地址。也可以写成如下形式:p = a; 对于数组元素a[i]的引用可以写成*(a+i),C语言在计...
阅读全文
摘要:今天主要学习到的是静态变量(static)、寄存器变量(register)、初始化、递归、预处理器。 比较容易混淆的是关于静态变量的,而静态变量分为:静态局部变量和静态全局变量。 静态局部变量: (1)、静态局部变量在函数内定义 它的生存期为整个源程序,但是其作用域仍与自动变量相同,只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。 (2)、允许对构造类静态局部量赋初值 例如数组,若未赋以初值,则由系统自动赋以0值。 (3)、对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。 ...
阅读全文
摘要:每天一点点,不知不觉已经到了第4章了。 首先是对于函数的基础知识的说明,以等同于C#的IndexOf的函数为例子,对于一些C#的程序员,C/C++中的字符串是一个char的数组,但是数组的书写方式也是不一样的,C#中都是类型[],而C/C++中的确实类型 变量名[],虽然一开始都是有点不习惯,但是几次练习实践后,还是可以适应的。函数的具体实现如下: 1 int strindex(char s[], char t[]) 2 { 3 int i, j, k; 4 5 for( i = 0; '\0' != s[i]; i++) 6 { 7 fo...
阅读全文
摘要:c/c++的控制流跟C#的差不多,分别有if-else、else-if、while、for、do-while、break、continue以及goto. 对于if-else的习题为对于一下折半查找的例子,用while循环语句共执行2次测试,其实可以只用一次,于是要求改写,原代码如下: int binsearch(int x, int v[], int n) { int low, mid, high; low = 0; high = n - 1; while ( low <= high ) { mid = (low+high) / 2; ...
阅读全文
摘要:这次的章节主要是对于按位运算符的掌握,如:~、&、|、>>、<<,看到这几个运算符,让我想起了以前突然有一次在网上看到一个算法(C#)写的,里面就有很多这样的按位运算符,当时我就懵了,于是便到网上找资料,当时用具体的按位运算符去搜索,没找到什么资料,后来就发了博文,记录了自己一些理解,现在回想起来,终于把这几个问题搞明白了,呵呵。 由于刚刚掌握没多久,怕自己隔段时间就会生疏,于是拿一道练习题来做解析,以后自己再来看便能更好的熟悉起来。 例题:将x中从第p位开始的n个(二进制)位设置为y中最右边的n位的值。 实现: View Code 1 unsigned set
阅读全文
摘要:可能是因为不是计算机专业出身的原因吧,对于一些类型的取值范围都是模模糊糊的,这次学习c语言又再次温习了一遍,对于有符号无符号的类型,也让我的脑袋一时间都变成了浆糊,long类型的常量以字母l或L结尾,无符号的long类型常量则以ul或UL结尾,后缀为f或者F则为float类型,这里又再次出现了一个以l或L结尾的常量,但是表示的却是浮点类型的long double。 接下来便是关于运算过程中的转换原则,通常都是将“比较窄的“类型转化为”比较宽的“类型,这样可以保证不会因为转型而导致信息丢失,但是如果将”比较宽的“类型转化为”比较窄的“也是可以的,只是会造成信息的丢失,会将超出的高位部分丢弃...
阅读全文
摘要:经过一番努力以后,终于给自己定下了学习c/c++的目标,学习一门新的语言,对于编程思想可能也要有所转换,毕竟c是面向过程语言而c++则是在此基础上添加了面向对象的特征,从语法的角度来讲,跟C#也是有很多的不同的地方。此系列文章便是我在学习c/c++的过程当中遇到的一些问题的记录。 此番计划中第一本书便是《C程序设计语言(第二版)》,从最简单的“Hello, World”开始,前面的几个练习也都是为了能更好的熟悉这门语言而设立的。 可能是编码习惯的原因,对于各种编码练习,总是不习惯将它们全部放在一个函数内,于是想将其重构成额外的练习函数,于是我便在没有了解的情况下,想将练习的内容放入...
阅读全文