C语言指针和数据的关系

#include <stdio.h>
#include <stdlib.h>

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
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值