博客
关于我
C语言指针比较高级的用法及指针数组面试题详解
阅读量:167 次
发布时间:2019-02-27

本文共 2570 字,大约阅读时间需要 8 分钟。

C/C++ ??????

??????

????? C/C++ ????????????

  • ??????

    char c = 'a';
    char* pc = &c;
    *pc = 'a';

    ??????? pc ?????? c ?????? pc ??????????????? pc ??? c ??????

  • ?????

    char* str = "hello world";
    printf("%s\n", str);

    ??????????????????????????????????? str ????????????????? str ???????????????????????????? '\0'?


  • ??????

    ???????????????????????????????????????

  • ??????

    char (*p)[10];
    ??? p ???????? 10 ??????????

  • ?????????????

    int a[10];

    • a ??????????
    • &a ???????

    ?? a + 1 ?? 1 ??????4 ????? &a + 1 ?? 10 ????????????


  • ??????

    ?????????????????????????????????????

  • ??????

    char* arr[4];

  • ??????

    char** arr[5];


  • ???????????

    ??????

  • ???????

    void test(int arr[]);
    void test(int* arr);

    • arr[] ?????????????
    • arr* ??????????????
  • ??????

    • ??????????????
    • void test(int arr[3][5]);
    • void test(int arr[][5]);
  • ????

    void test(int* arr);
    void test(int** arr);


  • ??????

    ?????????????????

  • ??????

    void (*pfun)();

  • ???????

    void PopSort(int* nums, int numsSize, int (*p)(int x, int y)) {    // ...}void GreaterPopSort(int x, int y) { return x > y ? 1 : 0; }void LessPopSort(int x, int y) { return x < y ? 1 : 0; }int main() {    // ?? PopSort ????????? GreaterPopSort ? LessPopSort ???????}

  • ??????

    ????????????????????????

    void test(int* arr, void (*pfun)(int x, int y)) {    pfun(arr[0], arr[1]);}

    ???????? pfun?????????????????


    ????????????????

  • ??????

    int (*prt[10]);
    ??? prt ????? 10 ?????????

  • ???????????

    void (***cpp)(int x, int y);
    ??? cpp ?????????????????


  • ????????

    ?? 1

    int main() {    int a[5] = {1, 2, 3, 4, 5};    int* ptr = (int*)(a + 1); // ????????    printf("%d,%d", *ptr - 1, *ptr);    return 0;}

    ?????4,5


    ?? 2

    int main() {    char a[4] = {'1', '2', '3', '4'};    char* p = a;    printf("%c,%c", *p, *(p + 1));    return 0;}

    ?????1,2


    ?? 3

    int main() {    char a[3] = {'w', 'o', 'r'};    char** pa = a;    printf("%s", *pa);    return 0;}

    ?????wor


    ?? 4

    int main() {    char a[3][2] = {        {'w', 'o'},        {'r', 'k'},        {'a', ' '}    };    char* p = a;    printf("%s\n", p[0]);    return 0;}

    ?????wo


    ?? 5

    int main() {    char a[5][5];    char** p = a;    printf("%p,%d\n", p[4][2], p[4][2] - 'a');    return 0;}

    ?????0x1c4d0, 4


    ?? 6

    int main() {    char a[2][5] = {        {'w', 'o', 'r', 'k', ' '},        {'a', 'l', 'i', 'b', 'a'}    };    char** p = a;    printf("%s\n", p[1][4]);    return 0;}

    ?????a


    ?? 7

    int main() {    char a[] = {"work", "at", "alibaba"};    char** pa = a;    printf("%s\n", pa[1]);    return 0;}

    ?????at


    ?? 8

    int main() {    char a[5] = {'E', 'N', 'T', 'E', 'R'};    char** cpp = a;    printf("%s\n", **cpp);    printf("%s\n", *cpp);    return 0;}

    ?????

    ENTER
    E

    转载地址:http://nzub.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现基于模板的双向链表(附完整源码)
    查看>>
    Objective-C实现基本二叉树算法(附完整源码)
    查看>>
    Objective-C实现备忘录模式(附完整源码)
    查看>>
    Objective-C实现复制粘贴文本功能(附完整源码)
    查看>>
    Objective-C实现复数类+-x%(附完整源码)
    查看>>
    Objective-C实现多组输入(附完整源码)
    查看>>
    Objective-C实现大根堆(附完整源码)
    查看>>
    Objective-C实现子集总和算法(附完整源码)
    查看>>
    Objective-C实现字符串IP地址转DWORD地址(附完整源码)
    查看>>
    Objective-C实现字符串jaro winkler算法(附完整源码)
    查看>>
    Objective-C实现字符串manacher马拉车算法(附完整源码)
    查看>>
    Objective-C实现字符串wildcard pattern matching通配符模式匹配算法(附完整源码)
    查看>>
    Objective-C实现字符串word patterns单词模式算法(附完整源码)
    查看>>
    Objective-C实现字符串Z 函数或 Z 算法(附完整源码)
    查看>>
    Objective-C实现字符串加解密(附完整源码)
    查看>>
    Objective-C实现字符串复制功能(附完整源码)
    查看>>
    Objective-C实现完整的ComplexNumber复数类(附完整源码)
    查看>>
    Objective-C实现将位转换为浮点数bitsToFloat算法(附完整源码)
    查看>>
    Objective-C实现将字节数组转换为 base64 编码算法(附完整源码)
    查看>>
    Objective-C实现将彩色图像转换为负片算法(附完整源码)
    查看>>