栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言复盘

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言复盘

文章目录
  • 一维数组
  • 二维数组
  • 指针
  • 二维数组
  • 函数指针
  • 数组指针和二级指针
  • sizeof和strlen的区别
  • 各种类型变量的字节大小
  • 算数运算符
  • 关系运算符
  • 逻辑运算符
  • 运算符的优先级和结合性
  • 条件运算符

一维数组

数组地址是连续的,数组名是数组的地址

  • 数组定义方式:
int array[100];//没有初始化,仅仅申请了100个整形数的内存空间,大小为100*4个字节,数组中一个元素的大小是一个整形数的大小,即4个字节
int array[3] = {1,2,3};//完整初始化了数组,申请了三个整形数内存空间,并赋值三个数1、2、3
int array[100] = {1,2,3};//不完整初始化数组,申请了100个整形数内存空间,但只赋值三个数,放在数组前三个位置

  • 冒泡排序
    从小到大排序12、1、15、9
#include

int main()
{
	int array[4] = {12,1,15,9};
	int size = sizeof(array)/sizeof(array[0]);
	int i = 0;
	int j = 0;
	int temp = 0;

	for(i = 0;i

		for(j = 0;j
			if(array[j]>array[j+1])//从大到小排序则用<
			{
				temp = array[j];
				array[j] = array[j+1];
				array[j+1] = temp;
			}	
		}
	}
	printf("从小到大排序:n");
	for(i = 0;i
		printf("  %d",array[i]);
	}	
		putchar('n');

	return 0;
}

输出结果:

  • 数组传参
#include

void printfArr(int arry[10])//形参中不存在数组的概念,即便中括号约定了数组的大小,也无效,传递的是数组的首地址,大小是8个字节,形参可以为array[]
{
	printf( "printfArr:%dn",sizeof(arry));	
}

int main()
{
	int array[4] = {12,1,15,9};
	
	printf("main:%ldn",sizeof(array));
	printfArr(array);
	
	return 0;
}

二维数组

定义方式:

int array[2][3] = {{12,33,44},{33,323,43}};//分行给数组元素赋值
int array[2][2] = {1,2,3,4};//可以将所有数据写在一个大括号内,按照数组元素排列顺序对元素赋值。
int array[][3] = {1,2,3,4,5,6};//在为所有元素赋初值时,可以省略行下标,但是不能省略列下标。

指针
  • 数组名是数组首地址,是指针常量,不可以做偏移操作
#include
int main()
{
	int array[3] = {1,2,3};
	int *p = array;
	
	for(int i = 0;i<3;i++){
		printf("%dn",*(array++));
	}
	
	return 0;
}

  • 指针变量可以做偏移操作
#include


int main()
{
	int array[3] = {1,2,3};
	int *p = array;
	
	for(int i = 0;i<3;i++){
		printf("%dn",*p++);

	}
	
	return 0;
}

二维数组


*a = a[0]
*(a+1) = a[1]

函数指针

数组指针和二级指针

sizeof和strlen的区别

strlen(char*)函数求的是字符串的实际长度,直到遇到第一个’’,然后就返回计数值,且不包括’’,而sizeof()函数返回的是变量声明后所占的内存数,不是实际长度。
sizeof是操作符,strlen是函数。

#include 
#include 


int main()
{
	int a[10] = {0};//数组长度为10
    int size1 = sizeof(a);
    int size2 = strlen(a);
    printf("%dn",size1);
    printf("%dn",size2);
    
	system("pause");
	return 0;
}

各种类型变量的字节大小

算数运算符

  • 算术运算符的优先级

在进行表达式求值时,通常会按照运算符的优先级别从高到低依次执行。在算术运算符中,、/、%的优先级别高于+、-的级别。例如,如果在表达式中同时出现和+,那么应先运算乘法:

R=x+y*z;

在上述表达式中,因为比+的优先级高,所以会先进行yz的运算,最后加上x。

  • 算术运算符的结合性

当算术运算符的优先级相同时,结合方向为“自左向右”。例如:

a-b+c

因为减法和加法的优先级是相同的,所以b先与减号相结合,执行a-b的操作,然后执行加c的操作,这样的操作过程就称为“自左向右的结合性”。

关系运算符


关系运算符的结合性都是自左向右的。

逻辑运算符

运算符的优先级和结合性

条件运算符

条件运算符是C语言中唯一的一个三目运算符,其求值规则为:如果表达式1的值为真,则以表达式2 的值作为整个条件表达式的值,否则以表达式3的值作为整个条件表达式的值。条件表达式通常用于赋值语句之中。

表达式1 ? 表达式2 : 表达式3

max = (a>b) ? a : b;等价于下面if else语句

if(a>b){
  max = a;
}else{
  max = b;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/836158.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号