好像有所感悟 先操作看看 。。。
非常感谢。。。
非常感谢。。。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> const size_t blockSize = 10 * sizeof(char); // 行大小 const size_t memorySize = 2 * blockSize; // 2行的二维数组 void ShowMemory(const char* p, size_t size); void main(void) { char* memoryPtr = (char*) malloc(memorySize); // 动态申请内存 memset(memoryPtr, 0, memorySize); // 将申请所得内存用0填充 ShowMemory(memoryPtr, memorySize); putchar('\n'); printf_s("Press any key to continue...\n\n"); _getch(); const char str1[] = "Hello"; const char str2[] = "world!"; int rowIndex = 0; // 行号 strcpy_s(memoryPtr + rowIndex * blockSize, sizeof(str1), str1); // 将字符串str1复制到二维数组第0行 ++rowIndex; strcpy_s(memoryPtr + rowIndex * blockSize, sizeof(str2), str2); // 将字符串str2复制到二维数组第1行 ShowMemory(memoryPtr, memorySize); // 观察内存块数据 putchar('\n'); printf_s("%s %s %s\n", memoryPtr, (strcmp(memoryPtr + 0 * blockSize, memoryPtr + 1 * blockSize) != 0) ? "!=" : "==", memoryPtr + blockSize ); _getch(); free(memoryPtr); // 释放动态内存 } // 逐个字节输出内存块的内容,显示字符及其内码 void ShowMemory(const char* p, size_t size) { for (size_t index = 0; index < size; ++index, p++) { printf_s("%c (0x%02X)\n", *p, *p); } }