C语言中级

1. 常量

常量:在程序执行期间不会改变的值。
常量包括整数常量、浮点常量、字符常量和字符串常量。

  • 整数常量:整数,如1、4、35、329
  • 浮点常量:小数,如0.0、0.1、4.7、8.224
  • 字符常量:括在单引号中,如’c’、‘s’
  • 字符串常量:括在双引号中

定义常量:#define 或者 const

#define int AGE 100;
#define char OTHERLING '\n';
const int AGE = 100;
const char OTHERLING = '\n';

double:浮点类型,精确到小数点后6位

2. 作用域

作用域:在程序中变量所在的区域,如果超过这个区域变量就不能被访问。
变量可分为:局部变量、全局变量和形式参数。
局部变量:在函数或者块内生命的变量,局部变量在函数或块外不能被用。
全局变量:在main函数外声明的变量。
**注:**局部变量和全局变量的名称可以相同,但是在函数内,局部变量的值会覆盖全局变量的值。
形式参数:函数的参数被当作该函数内的局部变量,它们会优先覆盖全局变量。

int main(void){
/blabla
return 0; //以0的状态退出main函数
}

3. 存储类

存储类:存储类定义了变量与函数的可访问性(即作用域范围和生命周期)。
存储类分为static、auto、register等。
static是全局变量的默认存储类。 static修饰局部变量时,只初始化一次。

#include <stdio.h>
static int count = 5;
int count2 = 10; // count 和 count2 都是 static 存储类

void test(){
	static int a = 5;
	a++;
	printf("a = %d, count = %d\n", a, count)}

结果:
在这里插入图片描述
**注:**static是指变量的值在程序生存期一直可以保持,而且变量需要初始化。

4. 运算符

++a & a++

#include <stdio.h>

int main(){
	int a = 10;
	
	int b = a++; //先赋值,再+1 
	printf("%d, %d\n", b,a);  
	
	b = ++a; //先+1,再赋值 
	printf("%d, %d\n", b,a);
	
	b = a--; //先赋值,再-1 
	printf("%d, %d\n", b,a);
	
	b = --a; //先-1,再赋值 
	printf("%d, %d\n", b,a);
	
	return 0;
}

结果:
在这里插入图片描述

逻辑运算法

&&:逻辑与
||:逻辑或
!:逻辑非

赋值运算符

+=:先运算后赋值

5. 数组

数组:存储相同类型元素的集合。

double a[5] = {1.0, 2.0, 3.0, 4.0, 5.0};
double a[] = {1.0, 2.0, 3.0, 4.0, 5.0}

如果中括号内不写数组大小的话,那么数组的大小就是初始化时原始的个数。
数组的索引从0开始。

6. 指针数组

指针数组:让数组存储int或double或其他数据类型的指针。

#include <stdio.h>
{
	int *p[3];
	
	return 0;
}

数组p,有三个整数指针,即p中的每个元素都是指向int值的指针。

#include <stdio.h>
#define MAX 3

int main(){
	int array[3] = {10, 100, 1000};
	int i;
	int *p[MAX];
	
	for(i = 0; i< MAX; i++){
		p[i] = &array[i];
	}
	
	for(i = 0; i< MAX; i++){
		printf("array[%d] = %d\n", i, *p[i]);
		printf("p[%d] = %d\n", i, p[i]);
	}
	
	return 0;
}

结果:
在这里插入图片描述

7. 字符串

C语言中,字符串就是一堆字符数组,以null结尾,null用\0表示。
eg. char a[6] = {'h', 'e', 'l', 'l', 'o', '\0'};
char a[] = "hello";
char a[6] = {'h', 'e', 'l', 'l', 'o',};//C语言编辑器会自动的把\0加在字符串末尾
字符串的占位符用%s。

8. 函数指针

函数指针:指向函数的指针变量。可以调用函数和传递参数。

#include <stdio.h>

int max(int x, int y){
    return x > y ? x : y;
}

int main(void){
    int (*p)(int, int) = &max;
    int a, b, c;
    printf("Please input 2 numbers:");
    int ref = scanf("%d, %d", &a, &b); //scanf返回成功赋值的数据项数
    if(ref == 2){ //如果a、b都成功赋值
        c = p(a, b);
        printf("The max number is: %d\n", c);
    }else{
          printf("Input wrong!!!!");
    }
        
    return 0;
        }

(*p)(int, int)意为定义了一个函数指针*p,有两个整型参数。

9. 结构体

结构体:是一种数据类型,可以存储不同类型数据项,可以表示一条记录。
结构体语法:

struct Person{
	char name[50];
	int age;
	int height;
	int weight;
};

10. typedef

typedef:可以为类型取一个新名字。
typedef int NUM;给int类型取了一个新名字NUM。
可以用来对结构体使用typedef来定义一个新的数据类型名字,然后使用这个新的数据类型直接定义结构变量。

#include <stdio.h>

typedef struct Persons{
	char name[50];
	int age;
	int height;
	int weight;
} Person;

int main(){
	Person person;
	strcpy(person.name, "hhh");
	person.age = 19;
	person.height = 180;
	person.weight = 90;
	
	printf("person name: %s\n", person.name);
	printf("person age: %d\n", person.age);
	printf("person height: %d\n", person.height);
	printf("person weight: %d\n", person.weight);
	
	return 0;
}

#definetypedef类似,但有几点不同:
typedef仅限于为类型定义符号名称;
#define不仅可以为类型定义别名,也能为数值定义别名

	#define TRUE 1
	#define FALSE 0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值