#includevoid my_printf(int arr[],int sz) {//对数组的输出 int i = 0; for (i = 0;i < sz - 1;i++) { printf(" %c ",arr[i]); } } void reserver(int* arr, int sz) {//交换数组元素 int a = 0; int* tep = &a;//创建工具指针 int *left = arr; int* right = arr + sz-2; while (left < right) { *tep = *right; *right = *left; *left = *tep; left++; right--; } } int main() { int arr[10] = { 'a','b','c','d','e','f','g','h','i',' '}; int sz = sizeof(arr) / sizeof(arr[0]); reserver(arr,sz); my_printf(arr,sz); }
//另外的交换数组,参数为数组
void reserver(int arr[], int sz) {
int left = 0;
int right = sz - 2;
while(left
调试过程:
①对于工具指针未进行初始化,造成读取时访问空间冲突
②未进行循环变量的改变,死循环了
③int *right=arr+sz-1,会不完全输出少一个a。
④int* right=arr+sz,此时指针right 为野指针,超出了数组的长度
⑤若arr数组,内容为整型数字,则带有sz的表达式都在基础上再减去1。
2sizeof() 返回类型是无符号整型
#include
//关于sizeof()返回的类型是无符号整型
int i;
int main() {
i--;
printf("%dn", i);
printf("%dn", sizeof(i));
if (i > (int)sizeof(i)) {//结果强制转换成整型
printf(">n");}
else{
printf(" sizeof(i)) {//正常结果
printf(">n");}
else {
printf("
调试过程:
①无符号整型进行比较会将结果强制转换成无符号整型,可以强制转换回整型
3



