本篇文章主要介绍了"20160208CCPP体系详解0018天",主要涉及到方面的内容,对于其他编程jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下:
程序片段(01):main.c
内容概要:PointWithOutInit#include #include
#include #include //01.几组概念区分:// 1.普通变量和指针变量:// 是否具有地址意义// 2.变量指针和常量指针// 指针变量和数组名的区分// 3.常量指针和指针常量// 数组名和地址意义上的数值// 注:通常意义上的指针实质上是指着变量//02.函数形参使用数组声明形式以及指针声明形式// 其访问实参的方式都是相同的(数组形式<=>指针形式)int main01(void)
{
int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
int * p = arr;//变量指针接收常量指针的值for (int i = 0; i < 10; ++i)
{
printf("%d, %d, %d, %d \n", arr[i], *(arr + i), p[i], *(p + i));
}
//接收同样一个数组实参// 采用数组声明形式和采用指针声明形式的访问方式完全一样// 例如:arr[i]<=>p[i];*(p+i)<=>*(arr+i) system("pause");
}
//03.数组作为形参的函数标准声明形式!// 指向数组元素的指针+数组元素个数void revArr(int * p, int n)
{
for (int i = 0; i < n / 2; ++i)//节省效率的反转方式
{
p[i] = p[i] ^ p[n - 1 - i];
p[n - 1 - i] = p[i] ^ p[n - 1 - i];
p[i] = p[i] ^ p[n - 1 - i];
}
}
//04.通过指针方式来对数组进行遍历!void revArrT(int * p, int n)
{
for (int * pHead = p, *pTail = p + n - 1; pHead < pTail; ++pHead, --pTail)
{//奇数:重合退出+偶数:交叉退出
*pHead = *pHead ^ *pTail;
*pTail = *pHead ^ *pTail;
*pHead = *pHead ^ *pTail;
}
}
//05.传递实质是什么就可以以何种形式进行数据访问!// 这里传递的实质是数组,因此可以采用数组方式访问void showArr(int * p, int n)
{
for (int i = 0; i < n; ++i)
{
printf("%2d", p[i]);
}
}
int main02(void)
{
int arrA[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };//10/2=5..0--><=5-->0~4(前0~4与后0~4)对称int arrB[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };//9/2=4..1--><=4-->0~3(前0~3与后0~4)对称
revArr(arrA, sizeof(arrA) / sizeof(arrA[0]));
showArr(arrA, sizeof(arrA) / sizeof(arrA[0]));
putchar('\n');
revArrT(arrB, sizeof(arrB) / sizeof(arrB[0]));
showArr(arrB, sizeof(arrB) / sizeof(arrB[0]));
system("pause");
}
//06.特殊常量指针访问数组方式:// 原理:arr[i]<=>*(arr+i)// 因此:i[arr]<=>*(i+arr)// 注:所有数组的解析方式都是按照arr[i]-->*(arr+i)-->// 所有荒唐用法i[arr]也可以进行替换为-->*(i+arr)int main03(void)
{
int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
printf("% \n", 8[arr]);
//arr[1]<==>*(arr+1) system("pause");
}
程序片段(09):queue.h&queue.c+01.多线程.c+02.多线程排队.c
内容概要:多线程并行计算