好像有所感悟 先操作看看 。。。
非常感谢。。。
非常感谢。。。
程序代码:
#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);
}
}