摘要: 个函数总是占用一段连续的内存区域,函数名在表达式中有时也会被转换为该函数所在内存区域的首地址,这和数组名非常类似。我们可以把函数的这个首地址(或称入口地址)赋予一个指针变量,使指针变量指向函数所在的内存区域,然后通过指针变量就可以找到并调用该函数。这种指针就是函数指针。函数指针的定义形式为: ret 阅读全文
posted @ 2022-03-21 21:36 随遇而安== 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 指针(Pointer)就是内存的地址,C语言允许用一个变量来存放指针,这种变量称为指针变量。指针变量可以存放基本类型数据的地址,也可以存放数组、函数以及其他指针变量的地址。程序在运行过程中需要的是数据和指令的地址,变量名、函数名、字符串名和数组名在本质上是一样的,它们都是地址的助记符:在编写代码的过 阅读全文
posted @ 2022-03-21 21:36 随遇而安== 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 二维数组在概念上是二维的,有行和列,但在内存中所有的数组元素都是连续排列的,它们之间没有“缝隙”。以下面的二维数组 a 为例: int a[3][4] = { {0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11} }; 从概念上理解,a 的分布像一个矩阵: 0 1 2 阅读全文
posted @ 2022-03-21 21:35 随遇而安== 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 如果一个数组中的所有元素保存的都是指针,那么我们就称它为指针数组。指针数组的定义形式一般为: dataType *arrayName[length]; [ ]的优先级高于*,该定义形式应该理解为: dataType *(arrayName[length]); 括号里面说明arrayName是一个数组 阅读全文
posted @ 2022-03-21 21:30 随遇而安== 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 指针可以指向一份普通类型的数据,例如 int、double、char 等,也可以指向一份指针类型的数据,例如 int *、double *、char * 等。如果一个指针指向的是另外一个指针,我们就称它为二级指针,或者指向指针的指针。假设有一个 int 类型的变量 a,p1是指向 a 的指针变量,p 阅读全文
posted @ 2022-03-21 21:29 随遇而安== 阅读(165) 评论(0) 推荐(0) 编辑
摘要: C语言允许函数的返回值是一个指针(地址),我们将这样的函数称为指针函数。下面的例子定义了一个函数 strlong(),用来返回两个字符串中较长的一个: #include <stdio.h> #include <string.h> char *strlong(char *str1, char *str 阅读全文
posted @ 2022-03-21 21:26 随遇而安== 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 在C语言中,函数的参数不仅可以是整数、小数、字符等具体的数据,还可以是指向它们的指针。用指针变量作函数参数可以将函数外部的地址传递到函数内部,使得在函数内部可以操作函数外部的数据,并且这些数据不会随着函数的结束而被销毁。像数组、字符串、动态分配的内存等都是一系列数据的集合,没有办法通过一个参数全部传 阅读全文
posted @ 2022-03-21 21:24 随遇而安== 阅读(131) 评论(0) 推荐(0) 编辑
摘要: C语言中没有特定的字符串类型,我们通常是将字符串放在一个字符数组中 #include <stdio.h> #include <string.h> int main(){ char str[] = "http://c.biancheng.net"; int len = strlen(str), i; 阅读全文
posted @ 2022-03-21 21:22 随遇而安== 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 数组(Array)是一系列具有相同类型的数据的集合,每一份数据叫做一个数组元素(Element)。数组中的所有元素在内存中是连续排列的,整个数组占用的是一块内存。以int arr[] = { 99, 15, 100, 888, 252 };为例,该数组在内存中的分布如下图所示: 定义数组时,要给出数 阅读全文
posted @ 2022-03-21 21:19 随遇而安== 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 指针变量保存的是地址,而地址本质上是一个整数,所以指针变量可以进行部分运算,例如加法、减法、比较等,请看下面的代码: #include <stdio.h> int main(){ int a = 10, *pa = &a, *paa = &a; double b = 99.9, *pb = &b; 阅读全文
posted @ 2022-03-21 21:16 随遇而安== 阅读(65) 评论(0) 推荐(0) 编辑
摘要: 据在内存中的地址也称为指针,如果一个变量存储了一份数据的指针,我们就称它为指针变量。在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。指针变量的值就是某份数据的地址,这样的一份数据可以是数组、字符串、函数,也可以是另外的一个普通变量或指针变量。现在假设有一个 char 类型的变量 c,它存 阅读全文
posted @ 2022-03-21 21:15 随遇而安== 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 计算机中所有的数据都必须放在内存中,不同类型的数据占用的字节数不一样,例如 int 占用 4 个字节,char 占用 1 个字节。为了正确地访问这些数据,必须为每个字节都编上号码,就像门牌号、身份证号一样,每个字节的编号是唯一的,根据编号可以准确地找到某个字节。下图是 4G 内存中每个字节的编号(以 阅读全文
posted @ 2022-03-21 21:11 随遇而安== 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 预处理指令是以#号开头的代码行,# 号必须是该行除了任何空白字符外的第一个字符。# 后是指令关键字,在关键字和 # 号之间允许存在任意个数的空白字符,整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转换。下面是本章涉及到的部分预处理指令: 指令 说明 # 空指令,无任何效果 阅读全文
posted @ 2022-03-21 21:09 随遇而安== 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 带参数的宏和函数很相似,但有本质上的区别:宏展开仅仅是字符串的替换,不会对表达式进行计算;宏在编译之前就被处理掉了,它没有机会参与编译,也不会占用内存。而函数是一段可以重复使用的代码,会被编译,会给它分配内存,每次调用函数,就是执行这块内存中的代码。【示例①】用函数计算平方值。 #include < 阅读全文
posted @ 2022-03-21 21:09 随遇而安== 阅读(66) 评论(0) 推荐(0) 编辑
摘要: 语言允许宏带有参数。在宏定义中的参数称为“形式参数”,在宏调用中的参数称为“实际参数”,这点和函数有些类似。对带参数的宏,在展开过程中不仅要进行字符串替换,还要用实参去替换形参。带参宏定义的一般形式为: #define 宏名(形参列表) 字符串 在字符串中可以含有各个形参。带参宏调用的一般形式为: 阅读全文
posted @ 2022-03-21 21:07 随遇而安== 阅读(353) 评论(0) 推荐(0) 编辑
摘要: #define 叫做宏定义命令,它也是C语言预处理命令的一种。所谓宏定义,就是用一个标识符来表示一个字符串,如果在后面的代码中出现了该标识符,那么就全部替换成指定的字符串。我们先通过一个例子来看一下 #define 的用法: #include <stdio.h> #define N 100 int 阅读全文
posted @ 2022-03-21 21:05 随遇而安== 阅读(377) 评论(0) 推荐(0) 编辑
摘要: 使用库函数之前,应该用#include引入对应的头文件。这种以#号开头的命令称为预处理命令。C语言源文件要经过编译、链接才能生成可执行程序:1) 编译(Compile)会将源文件(.c文件)转换为目标文件。对于 VC/VS,目标文件后缀为.obj;对于GCC,目标文件后缀为.o。 编译是针对单个源文 阅读全文
posted @ 2022-03-21 21:03 随遇而安== 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 如果把函数比喻成一台机器,那么参数就是原材料,返回值就是最终产品;从一定程度上讲,函数的作用就是根据不同的参数产生不同的返回值。C语言函数的参数会出现在两个地方,分别是函数定义处和函数调用处,这两个地方的参数是有区别的。 形参(形式参数) 在函数定义中出现的参数可以看做是一个占位符,它没有数据,只能 阅读全文
posted @ 2022-03-21 21:00 随遇而安== 阅读(346) 评论(0) 推荐(0) 编辑
摘要: C语言有多个函数可以从键盘获得用户输入,它们分别是: scanf():和 printf() 类似,scanf() 可以输入多种类型的数据。 getchar()、getche()、getch():这三个函数都用于输入单个字符。 gets():获取一行数据,并作为字符串处理。 scanf() 是最灵活、 阅读全文
posted @ 2022-03-21 20:49 随遇而安== 阅读(291) 评论(0) 推荐(0) 编辑
摘要: 在C语言中,有多个函数可以从键盘获得用户输入: scanf():和 printf() 类似,scanf() 可以输入多种类型的数据。 getchar()、getche()、getch():这三个函数都用于输入单个字符。 gets():获取一行数据,并作为字符串处理。 scanf() 是最灵活、最复杂 阅读全文
posted @ 2022-03-21 20:47 随遇而安== 阅读(253) 评论(0) 推荐(0) 编辑