C语言基本语法
指针变量:
在 C 语言中指针被用来标识号内存单元的地址,如果把这个地址用一个变量来保存,则这 中噢噢那个变量就成为指指针变量。 如指针变量 pi 只想变量 i,那么 pi 就表示变量 i 的地址,*pi 就表示变量 i 的值,pi=&i。i=3 与*pi=3 等价 指针变量的使用: 先定义,后使用。 定义的一般形式:数据类型 *指针变量名; 指针变量与普通变量建立联系的方法(为指针赋值): 指针变量名=&普通变量名; 说明:
(6)缺省数组第一维长度的部分赋值 应使用分行赋值方式明确指定行数 int a[][2] = {{1,},{1,2,},{2}} (7)通过键盘输入 (8)通过赋值语句逐个元素赋初值 二维数组作函数的参数:
二维数组作为函数的参数时,时地址传递方式,在被调函数中对数组元素的改变,会影响到 主调函数,对二维数组而言,在主调函数和被调函数中使用数组的方法都一样。 在定义被调函数时,二维数组的形参的第一维大小可有可无,有第一维大小时,可以可以时 任意大小;而第二维的大小必须有,并且和主调函数中相应的二维数组的第二维的大小一致。
自定义函数的相关知识 变量的存储类型
自定义函数: 函数分为声明部分和执行部分 函数的声明与定义: 函数的声明在程序的数据声明部分(文件包含命令和 main 函数之间),函数的定义的位置可 以在调用它的函数(一般在 main 函数之外)之前也可以在调用它的函数之后,也可以位于 其他的源程序模块中。 使用函数的优点: (1)使用函数可以控制任务的规模 (2)使用函数可以控制变量的作用范围 (3)使用函数可以可以由多人协作完成程序的开发 (4)使用函数可以重新利用已有的、调试好的、成熟的程序模块(函数) 局部变量和全局变量
用域扩展到本文件,否则按出错处理。 在高级语言的学习中一方面应数量掌握该语言的语法,因为它是算法实现的基础,另一方面 必须认识到算法的重要性,加强思维训练,以便写出高质量的程序。 getchar() getch() getche()函数和 putchar() putch()函数 putchar(c) putch(c) 把单个字符 c 输出到标准设备上 getchar() getche() getch()函数用于从终端输入数据 getchar() 按 enter 键之后才接受数据,只接收第一个数据 getch()和 getche()在输入一个字符后立刻被函数接受,不用按 enter 键。getch()不回显输入的 数据 getche()显示输入的数据
局部变量:
在语句块内定义的变量称之为局部变量,又称为内部变量,仅在定义它的语句块内有效,并 且拥有自己独立的存储空间。
全局变量:
在函数之外定义的变量成为全局变量。 如果在同一个源文件中,全局变量和局部变量同名,则在局部变量的作用范围内,全局变量 不起作用,即被“屏蔽”。
说明:
(1)一个函数中既可以使用本函数的局部变量,又可以使用有效的全局变量。 (2)利用全局变量可以增加函数联系的渠道,从而得到一个以上的返回值 (3)全局变量一般第一个字母用大写表示 (4)建议在一般情况下不要使用全局变量,因为全局变量一直占用存储空间,降低 ile 函数 的通用性和程序的清晰性,容易出错。 变量的存储类型: (1)自动型变量 auto int i=1; auto 关键字只能用于定义局部变量,为默认的类型 (2)寄存器型变量 register (3)静态型变量 static 该变量只有在所在的函数内有效,退出该函数时该变量的值仍然保留,下次进入后仍然可以 使用。退出程序时值才消失。 (4)外部型变量 extern C 程序在编译时当遇到 extern,先在本文件中找外部变量的定义,如果找到,就在本文件中 扩展作用域,如果找不到就在连接时从其他的文件中找到外部变量的定义如果找到,就将作
char *sp = "Hello world!!!"; 指向字符数组的字符指针: char str[] = "Hello world!!!", sp = str; 二维数组:
定义:
数据类型 数组名 [行数常量表达式][列数常量表达式];
运算:
赋值运算:a[2][1] = 3; 取地址预算:&a[2][3]; 算术运算:a[1][0] = a[0][0] + 1; 其他运算:a[i][j] > 0;
指针与一维数组: 指向一维数组的指针变量: 指向一维数组的指针成为数组指针。 赋值: p = &a[0] 或者 p = a 获取数组元素 a[i]的值:*(a+i) 指针表示法比下标表示法快的原因: 在 C 编译时,数组元素 a[i]被解释成*(a+i),即按照数组的首地址加上指针相对位移量得到 要找的元素的地址,然后找出该单元的内容。 指向一维数组元素的指针变量: *p = &a[6];表示 p 是指针变量,将 a[6]的地址赋予 p。 指向字符串的指针变量: 字符串是特殊的一维数组,不过,指向字符串的指针变量的使用方法与指向一般数组的指针 变量有所不同。 字符指针:
char a[10];
字符数组的初始化:
对字符数的各个元素分别进行初始化 char a[3] = {'a','b'}; /*余下的自动补‘\0’,这时字符数组就变成了字符串*/ 用字符串常量来给字符数组进行初始化 char a[13] = "hello world!"
字符数组的输入输出:
char c[6] (1)用格式符“%c”逐个输入输出字符: scanf("%c",&c[1]); printf("%c",c[1]); (2)用格式符“%s”整个输入输出字符串: scanf("%s",c); printf("%s",c);
int a=3, b=4; printf("main1:a=%d,b=%d\n", a, b); swap(&a, &b); printf("main2:a=%d,b=%d\n", a, b); } void swap(int *x, int *y){ int a; printf("swap1:a=%d,b=%d\n", *x, *y); a = *x; *x = *y; *y = a; printf("swap2:a=%d,b=%d\n", *x, *y); }
指针与数组 一维数组 二维数组 字符数组 二维字符串 指针 与一维数组
一维数组: 不允许对数组的长度进行动态定义 数组必须先定义后使用 数组的定义:int i[10] int b[] = {1,2,3,0,0,0} 等价于 int b[6] = {1,2,3} 字符数组: 字符数组是由若干个有效字符构成且以字符‘\0’作为结束标志的一个字符序列。 字符数组的定义:
(1)由于数组名就是该数组的首地址,所以指针变量与数组建立联系时,只需将数组名赋 予指针变量即可。 (2)当指针变量没有赋值时,可以赋空指针 NULL 或0,不能间接引用没有初始化或值为 NULL 的指针。 (3)&取地址运算符,*取只想的值的运算符。 指针变量的引用方式: (1)*指针变量名:表示所指变量的值。 (2)指针变量名:表示所指变量的地址 使用指针作为函数的参数: #include<stdio.h> void swap(int *x, int *y); void main(){
指针的运算: 指针的运算通常只限于:+,-,++,– (1)指针变量加减一个整数的算术运算:
表示通过加减运算获取新的内存空间的地址: p+1,p+c*i(c 表示指针变量所指向的数据类型所占用的字节数) (2)两个指针变量之间的算术运算: 只有减法运算,不能进行加法运算,表示两个指针变量之间的变量个数。 (3)两个指针变量之间的比较: ==,!=,<,>,<=,>=,结果为真(1)或假(0) (4)指针变量可以指向一个空值 有效数据的指针补指向0单元,对 NULL 指针不能使用间接引用。 空指针与未对指针变量 p 赋值是两个不同的概念: 空指针指向0单元,而未对指针赋值表示该指针可能指向一个未知的值。
(4)字符串比较函数 int strcmp(char * str1,char * str2); //string.h 字符串比较不能使用 if(str1 == str2)的形式,只能使用 strcmp(); (5)字符串长度测量函数 unsigned int strlen(char * str); 不包括字符串结束字符‘\0’ (6)找字符或字符串位置函数 查找字符的位置: char * strchr(char * str,char ch); 查找字符串的位置: char * strstr(char * str1,char str2); 指针 可以简单的认为“指针”就是地址,地址Байду номын сангаас是指针。一个变量的地址只能使用&符号获得。
C 语言基本语法 基本语法介绍 预处理命令
把小写字母转换成大写字母 char a,b; a='x'; b='y'; a=a-32; b=b-32; printf("%c,%c\n%d,%d\n",a,b,a,b); 复合赋值语句有利于编译处理,能提高编译效率并产生质量较高的目标代码 C 语言中的空语句: while(getchar!='\n'); //这里包含了空循环体 scanf 与 printf: scanf 输入数据可以指定数据字段的宽度,但不能规定数据的精度,而 printf 则可以 printf(“%3,2f”,a); //这里的3.2表示按实数形式输出,输出宽度为3,如果输出的数不足3,位, 则按实际宽度输出,四舍五入保留两位小数 预处理命令
宏定义 (1)不带参数的宏定义 #define PI 3.1415926 //不用加分号 (2)带参数的宏定义 #define MAN(a,b) ((a)>(b)?(a):(b))