C语言指针和数据的关系

#include 
#include 

int main()
{
    /*
     * 给你一个地址,让你在这个地址里面存储,一个2行3列的table,每个格子里面存一个char指针。
     */
    char **a;
    int i, j;
    i = 2;
    j = 3;
    a = (char **)malloc(i * sizeof(char *) * j);
    char *a1 = "hello";
    char *a2 = "world";
    char *a3 = "!";
    char *b1 = "I'm";
    char *b2 = "here";
    char *b3 = "end";
    a[0] = a1;
    a[1] = a2;
    a[2] = a3;
    a[3] = b1;
    a[4] = b2;
    a[5] = b3;
    // 方式1
    for (int ci = 0; ci < i; ci++)
    {
        for (int cj = 0; cj < j; cj++)
        {
            printf("%s\t", a[ci * j + cj]);
        }
        printf("\n");
    }
    // 方式2
    for (int ci = 0; ci < i; ci++)
    {
        for (int cj = 0; cj < j; cj++)
        {
            printf("%s\t", *(a+(ci * j + cj)));
        }
        printf("\n");
    }
    free(a);

    /*
     * 最后在验证一下**char,printf char[0]的问题
     */
    char **table;
    char *value;
    char *str1 = "aaa";
    value = str1;
    table = (char **)malloc(sizeof(char *));
    *table = value;
    printf("%s\n", table[0]);
    free(table);

    /*
    * 最后验证一下 *char ,print char
    */
    char *str2 = "bbb";
    printf("%s\n",str2);
    printf("%c\n",str2[0]);
    // 打印%s只能传递地址,不能传递值。
    // 打印%c不能传递地址。
    // 打印%d不能传递地址。
    char cn='A';
    char *pcn=&cn;
    printf("%c\n",*pcn);
    int n=66;
    int *num = &n;
    printf("%d\n",*num);

    return 0; // 程序执行成功,返回0
}

你可能感兴趣的:(c语言,算法,开发语言)