1.0 右移操作 vs 除法运算
右移操作在某些情况下比普通的除法运算更高效,尤其在嵌入式系统或对性能要求较高的场合,通常会用位移操作来代替除法运算。
1.1 数组的几种声明形式
int a[3]; //初始值是不确定的,随机的;
int a[3] = {0}; //数组中的三个数据都初始化为0;
int a[] = {1,2,3};
int a[3] = {1,2,3};
char character[3] = {'a', 'b', 'c'};
char character[3] = {'a'}; //将数组的第一个元素初始化为 'a'
,而剩下的两个元素会被默认初始化为 '\0'
(空字符)
char string1[20] = "its a string"; //这种字符串被称为字符串常量,将字符串读入到char数组的时候会自动的加上结尾的空字符。
5.指针数组和数组指针,int *p[3] 和 int p[3] 和 int (*p)[3] 的区别?
1. int *p[3]
//数组指针,p是一个数组,包含三个元素,每个元素都是指针,即p[0]、p[1]、p[2]都是指针。
int a = 1, b = 2, c = 3;
int *p[3];
p[0] = &a;
p[1] = &b;
p[2] = &c;
printf("a = %d\n", *p[0]);
2. int p[3]
//数组,包含三个int类型的元素
3. int (*p)[3]
//指针数组,p是一个指针,指向一个包含三个元素的数组。
int arr[3] = {1, 2, 3};
int (*p)[3] = &arr;
// int (*p)[3];
// p = arr; //把arr地址赋值给p,那么 p+1,p指针就会跨过3个int型数据的长度。
printf("%d\n", (*p)[0]); //输出1
printf("%d\n", (*p)[1]); //输出2
//当数组指针指向一个二维数组时:
int(* p)[4]; //定义了指向含有4个元素的一维数组的指针
int a[3][4];
p=a; //将二维数组的首地址赋值给p,也可是a[0]或&a[0][0]
p++; //表示p跨过行a[0][],指向了行a[1][]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】