[toc]
函数
C 源程序必须有且只有一个主函数
main()
;程序一定是从主函数开始,最后在主函数中结束整个程序的运行;
一个源文件由一个或多个函数组成;
除去主函数之外,所有函数都是平行且互相独立的,即在一个函数内只能调用其他函数,不能再定义一个函数;
一个函数可以调用其他函数或其本身,但任何函数均不可调用主函数.
声明一个函数:
1
2
3
4int function(int,char);
//int:声明一个整数型函数,其返回值是一个整数
//函数有两个形参,整数值变量在前,字符值变量在后
//函数声明时,只需要说明形参的类型和个数,不必写变量名调用函数:
1
2
3
4
5
6function(10,'A');
//程序调用函数时,代入函数参数表的参数值称为实际参数
/*等效于:
int i_p=10; //整数10 赋给被调函数的第1 个形参
char ch_a='A'; //字母A 赋给被调函数的第2 个形参*/for example:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using namespace std;
int readnum();//声明一个整数型函数,无参数
void sqrnum(int);//声明一个无返回值的函数,形参是一个整数变量
int main(void)
{
int t;
while (t = readnum())//调用函数
sqrnum(t);//调用函数
return(0);
}
int readnum()//定义函数
{
int t;
cout << "input a num:\n";
cin >> t;
return(t);//return 返回变量的类型必须与函数类型相符
}
//如果函数无需返回,则函数定义时应说明为“void”,意指空类型
void sqrnum(int num)//定义函数
{
cout << "sqr(" << num << ")=" << num * num << "\n";
}
变量类型强制转换
1 | //(类型说明符)(表达式); |
- 它不改变在数据说明时对该变量定义的类型!(临时性转换)
指针
1)指针是变量,存储着它所指向的变量的地址;
2)既然指针变量需要存储空间,那么它必定需要声明。
例如:
1
2
3
4
5
6int i_a,i_b;//整数变量
int *i_p;//整数型指针
i_p=&i_a;//把i_a的地址赋值给指针i_p
*i_p=10;//把10赋值给i_a
i_p=&i_b;//把i_b的地址赋值给指针i_p
*i_p=2;//把20赋值给i_b指针是一个地址变量,可以存储某个变量的内存地址,通过获取该变量的地址,让指针指向该变量,从而可以访问(读写)该变量的值。
让指针取得一个数组的地址:
1
2int array[N],*i_p;
i_p=array; //array即是数组的地址,与上述的&i_b相似指针变量加上或减去一个整数
i
的意义是把指针指向的当前位置(指向某数组元素)向前或向后跨过i
个位置。1
2
3
4
5
6i_p+=i;
i_p-=i;
i_p++;
++i_p;
i_p--;
--i_p;指针变量的加减运算只能对数组指针变量进行,对指向其他类型变量的指针变量做加减运算是毫无意义的。
并且,由于数组中元素类型不同(int/char/float),指针每加1,表示向后移动1个元素位置,表示指针变量指向下一个数据元素的首
地址,而不是简单的指针变量+1;例如:
注意:
不要使用没有赋值的指针。
指针也是变量,它的值(存储内容)是其指向的对象(或数据变量、常量和函数)的地址。
指针可以指向内存中的万物,但我们未必能操作万物
指针类型: