#include "stdlib.h"
#include "string.h"
#include "stdio.h"
#define _CRT_SECURE_NO_WARNINGS // 避免使用strcpy时编译error
void main02() {
char buf[128];
char* p = NULL;
strcpy(buf, "abcdefghijklmn");
//给指针变量赋值,就是不断的改变指针的指向。遍历内存,迭代器,遍历器
p = &buf[0];
p = &buf[1];
p = &buf[5];
for (int i = 0; i < strlen(buf); i++) {
p = &buf[i];
}
system("pause");
}
void main03() {
char* p = (char*)malloc(128);
strcpy(p, "abcdefghijklmn");
//给指针变量赋值,就是不断的改变指针的指向
p = p + 5;
*p = 8;
free(p); // 易错问题: p指针的指向变了,当前p指向到了p+2的位置,所以,允许程序时就crash了
system("pause");
}
void main() {
char* p = (char*)malloc(128); // malloc分配的内存空间的首地址要保留,用于free释放内存。
char* tmp = p;
strcpy(tmp, "abcdefghijklmn");
tmp = tmp + 5;
*tmp = 8;
free(p); // free要保证传入mallock分配的内存空间的首地址,否则,程序允许时crash。
system("pause");
}
C/C++指针易错模型demo1
于 2022-08-11 21:40:14 首次发布