ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码

20160208CCPP体系详解0018天(2/4)

来源:网络整理     时间:2016-02-21     关键词:

本篇文章主要介绍了"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
内容概要:多线程并行计算

相关图片

相关文章