「这是我参与2022首次更文挑战的第6天,活动详情查看:2022首次更文挑战」。
#define常量和宏
//函数的实现
int MAX(int x, int y)
{
if (x > y)
return x;
else
return y;
}
//宏的定义
#define MAX(X,Y) (X>Y?X:Y)
int main(void)
{
//int a = MAX;
int a = 10;
int b = 20;
//函数
int max = MAX(a, b);
printf("max = %d\n", max);
//宏的方式
max = MAX(a, b);
//max = (a>b?a:b);
printf("max = %d\n", max);
return 0;
}
8.指针
int main(void)
{
int a = 10;//四个字节
int* p = &a;//取地址
printf("%p\n", &a);
printf("%p\n", p);
//* - 解引用操作符
return 0;
}
指针大小在32位平台上为4个字节,在64位平台是8个字节
9.结构体
//创建一个结构体类型
struct Book
{
char name[20];//C语言程序设计
short price;//55
};
int main(void)
{
//利用结构体类型-创建一个额该类型的结构体变量
struct Book b1 = { "C语言程序设计",55 };
printf("书名:%s\n", b1.name);
printf("价格:%d\n", b1.price);
b1.price = 15;
printf("修改后的价格:%d\n", b1.price);
return 0;
}
struct Book
{
char name[20];//C语言程序设计
short price;//55
};
int main(void)
{
//利用结构体类型-创建一个额该类型的结构体变量
struct Book b1 = { "C语言程序设计",55 };
struct Book* pb = &b1;
//利用pb打印出我的书名和价格
//. 结构体变量.成员
//-> 结构体指针->成员
printf("%s\n", pb->name);
printf("%d\n", pb->price);
/*printf("书名:%s\n", b1.name);
printf("价格:%d\n", b1.price);
b1.price = 15;
printf("修改后的价格:%d\n", b1.price);*/
return 0;
}
\
数组
一维数组的创建与初始化
数组是一组相同类型元素的集合
int main() { //创建一个数组——存放整形——10个 int arr[10]; return 0; } 注:数组的创建中,[ ]中一定要给一个常量,不可以使用变量。
int main() { //创建一个数组——存放整形——10个 int arr[10] = {1,2,3};//不完全初始化,剩下的元素默认初始化为0 char arr2[5] = { 'a',98};//b的ASCII值为98 char arr3[] = "abcdef"; printf("%d\n", sizeof(arr3));//7 //sizeof计算arr3所占空间的大小 printf("%d\n", strlen(arr3));//6 //strlen 求字符串长度(找\0,且只算\0之前的字符个数,\0不算) return 0; } 注:
1.strlen和sizeof没有关联
2.strlen 是求字符串长度的——只能针对字符串长度要求 ——库函数——使用得引用头文件
3.sizeof 计算变量、数组、类型的大小-——单位是字节——操作符
int main() {
char arr1[] = "abc";//abc\0
char arr2[] = { 'a','b','c' };//a b c
printf("%d\n", sizeof(arr1));//4
printf("%d\n", sizeof(arr2));//3
printf("%d\n", strlen(arr1));//3
printf("%d\n", strlen(arr2));//随机值
} 一堆数组的使用
用[ ],下标引用操作符就可以实现数组访问
int main() { char arr[] = "abcdef";//[a][b][c][d][e][f][\0] int i = 0; for (i = 0; i < 6; i++)// (i = 0; i < (int) strlen(arr); i++) { printf("%c ", arr[i]); } return 0; }
int main() { char arr[] = "abcdef";//[a][b][c][d][e][f][\0] int sz = sizeof(arr) / sizeof(arr[0]); int i = 0; for (i = 0; i <sz; i++) { printf("%d ", arr[i]); } return 0; } 注:
1.数组用下标访问,下标从0开始 :[0]
2.数组的大小可以通过计算得到
int arr[10]
int sz = sizeof(arr) / sizeof(arr[0]);
一堆数组在内存中的存储
int main() { int arr[] = { 1,2,3,4,5,6,7,8,9,10 }; int sz = sizeof(arr) / sizeof(arr[0]); int i = 0; for (i = 0; i < sz; i++) { printf("&arr[%d] = %p\n", i, &arr[1]); } return 0; }
数组在内存中是连续存放的