#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {int arr[6] = { 1,2,3,4,5,6 };char* p = arr;int sz = sizeof(arr) / sizeof(arr[0]);for (int a = 0; a < sz; a++){printf("%d\n", *p);p += 4;}return 0;
}
这串代码遍历打印数组的结果是没有问题的,那么问题出在哪里了呢?
问题就出在了char*只能访问一个字节空间,所以打印值的范围也在一个字节大小范围之内(-128~127),
但是这个数组类型是int类型,也就是每个数组元素的大小是四个字节范围之内,
当数组元素大小超过一个字节时,char*类型的指针打印就会出错
如果这样,明显就是错的,因此
要记住指针类型一定要和数组类型一致,数组是int[]类型的,那么指针最好是int*类型的,不然容易出错
这样显然是危险的,因此,C++在这个地方进行了改良,你会发现那个char*p=arr;那个地方在C++压根就无法通过。
C++笔记后面会更新