2021-07-03
《零基础学C语言》—核心技术
1、如果所定义的函数没有要求返回值也可以用return结束程序,此时程序就不能有具体的返回值,即不能写为"return 某类型数据;";且函数返回到调用程序时不允许有接收值,即不能有赋值表达式。
2、在C语言中定义函数时,如果不指明函数是内部函数还是外部函数,那么默认将函数指定为外部函数。
3、 全局变量属于整个源文件,外部文件要使用该变量,需要extern关键字进行引用修饰。
4、未经赋值的指针变量不能使用,给指针变量的赋值只能赋予地址,而不能赋予任何其他数据。
5、某基本类型的指针p的自增运算p++是指向下一个存放该基本数据类型的地址,即按照它所指向的数据类型的直接长度进行增加;值得注意的是,虽然数组名a可以通过偏移量i实现*(a+i)来直接表示数组的第i个元素,但是数组名并不能像指针变量那样自增和自减。
6、二维数组a[m][n],a[0]表示第0行的首地址,a[0]+j 就是第0行第j个元素的地址。
7、利用指针引用二维数组关键要记住*(a+i)与a[i]是等价的。
8、用字符指针数组char * a[]来代替字符串数组(相当于二维字符数组char a[m][n]),可以提高空间利用率。
《零基础学C语言》—高级应用
1、声明一个结构体表示的是创建一种新的类型名,需要用新的类型名再定义变量。
2、结构体数组中各数据在内存中的存储是连续的。
3、假如student为结构体变量,pStruct为指向结构体变量的指针,那么以下3种形式的效果是等价的:
student.成员名;
(*pStruct).成员名;
pStruct->成员名;
4、假如pStruct为指向结构体变量的指针,那么"->“与”++"在以下情况合用时注意:
pStruct->iGrade++;//表示指向的结构体变量中成员iGrade的值,使用后该值加1
++pStruct->iGrade;//表示指向的结构体变量中成员iGrade的值先加1,再使用该值
5、假如pStruct为指向结构体数组变量的指针,那么有:
(++pStruct)->Number;//表示先使pStruct指向下一个数组元素的地址,然后取得该数组元素的成员值
(pStruct++)->Number;//表示先取得当前数组元素的成员值,再使得pStruct指向下一个数组元素的地址
6、对于结构体中有字符数组的情况,由于字符数组只能在定义时直接初始化,后面就只有用strcpy()函数来复制初始化,因此最好是在定义该类结构体时直接初始化。