美文网首页
【蜗牛黑板报】C语言malloc分配地址|printf|cons

【蜗牛黑板报】C语言malloc分配地址|printf|cons

作者: 技术是神奇的 | 来源:发表于2020-03-29 22:26 被阅读0次

    2019-03-29

    1. 分配空间之后才有真正的地址

    int a = 0;  
    printf("a:%p\n", &a); // a:0117FBE0
    int* p = NULL;
    printf("p1:%p\n", p); //p1: 00000000 

    p没有分配空间之前指向的是NULL,只有如下用malloc分配之后才有真正的空间

    p = (int*)malloc(sizeof(int));
    printf("p2:%p\n", p); // p2:01594A50

    2.printf必须放在一个函数里面使用,所以这里用test包起来了

    #ifdef __cplusplus
    extern "C" {
    #endif
            void test() { // printf的使用必须放在一个函数内,不能作为局部变量使用
            const int a = 99;
            int* p = (int*)&a;
            *p = 299;
            printf("%d\n", a);
            printf("%d\n", *p);
    }
    #ifdef __cplusplus
    }
    #endif

    3.  路径前需要加const,否则编译不过,加上const后也能往里面写内容

        FILE* fp = NULL;
        const char* fout = "C:\\Users\\xxxx\\Desktop\\test.txt";
        fp = fopen(fout, "wt");
        fprintf(fp, "%d,%f\n", 99,88.0);// 往test.txt文件中以%d和%f的格式写入99和88.000000
        fclose(fp);
        fp = NULL;

    注:
    1. fprintf(fp, "%d,%d\n", 99,88.0); // 若把88.0以%d的形式写入txt文件,则实际写入的是99和0
    2. fopen函数的使用过程中编译不过的问题,在代码第一行(所有#include文件之前)加                       #define _CRT_SECURE_NO_WARNINGS

    4.数组清零memset的两种方式

         char buf[5];
         printf("sizeof: %d\n", sizeof(buf)); //5
         memset((void *)&buf[0], 0, sizeof(char)*5); // 第一种
         memset(buf, 0, sizeof(buf));//第二种
         for (int i = 0; i < 5; i++) {
                printf("%d, ", buf[i]);//0,0,0,0,0,
        }

    相关文章

      网友评论

          本文标题:【蜗牛黑板报】C语言malloc分配地址|printf|cons

          本文链接:https://www.haomeiwen.com/subject/mjepuhtx.html