1.函数
2. 解引用
合起来是这样的
以交换函数为例说明
直接穿a,b进去是交换不了值的
要想该变这两个的值,就要传入地址
void swap(int* a,int* b)//int a ,int b 的作用范围 就在swap这个域中
{
int c = *a;
*a = *b;
*b = c;
}
内存开辟可以参考下图
3. 数组练习
//数组遍历
void show(int* arr, int len)
{
for (int i = 0; i < len; i++)
{
printf("%d", arr[i]);
}
printf("\n");
}
//数组的比较
int compare_arr(int* arr, int* arr1,int len,int len1)
{
for (int i = 0; i < len&& i<len1; i++)
{
if (arr[i] > arr1[i])
{
return 1;
}
if (arr[i] < arr1[i])
{
return -1;
}
}
//最少有一个数组走到了尽头,而且依然相等
if (len < len1)
{
return -1;
}
else if (len > len1)
{
return 1;
}
else
{
return 0;
}
}
//数组的copy
int copy(int *arr_des,int len1,int * arr_scr,int len2)
{
/* int rlen = len > len1 ? len1 : len;
for (int i = 0; i < rlen; i++)
{
arr[i] = arr1[i];
}*/
if (len1 < len2)
{
printf("error:len des < len src");
return -1;
}
int i = 0;
for (int i = 0; i < len2; i++)
{
arr_des[i] = arr_scr[i];
}
return 0;
}
//数组的查找
int research(int* arr, int a,int len)
{
for (int i = 0; i < len; i++)
{
if (arr[i] == a)
{
return 1;
}
}
return 0;
}
//数组中元素的替换
void change(int*arr,int len,int rer,int result)
{
for (int i = 0; i < len; i++)
{
if (arr[i] == rer)
{
arr[i] = result;
}
}
return;
}
int main()
{
int arr[] = { 1,2,3,4,5,6 };
int arr3[] = { 1,2,8,4,5,6 };
a=compare_arr(arr, arr3, sizeof(arr) / sizeof(int), sizeof(arr3) / sizeof(int));
printf("%d\n", a);
int arr1[] = { 1,2,3,4,5,6 };
int arr2[] = { 1,2,8,4,5,6 };
show(arr1, sizeof(arr1) / sizeof(int));
show(arr2, sizeof(arr2) / sizeof(int));
copy(arr1, sizeof(arr1) / sizeof(int), arr2, sizeof(arr2) / sizeof(int));
show(arr1, sizeof(arr1) / sizeof(int));
show(arr2, sizeof(arr2) / sizeof(int));
int b=research(arr1, 1, sizeof(arr1) / sizeof(int));
printf("%d\n", b);
change(arr1, sizeof(arr1) / sizeof(int), 6, 7);
show(arr1, sizeof(arr1) / sizeof(int));
return 0;
}
4.宏替换发生在预编译时期
#include<stdio.h>
#define ARR_MAX_LEN 10
//宏替换发生在预编译时期
void show(int *arr)
{
int i = 0;
for (int i = 0; i < ARR_MAX_LEN; i++)
{
printf("%d\n", arr[i]);
}
}
int main()
{
int arr[ARR_MAX_LEN] = { 12,55,34,44,22,44,3,5,6,7 };
show(arr);
return 0;
}