//用指针反转数组,要求键盘输入数组长度和数组元素,遇到了点疑问,谁能解答一下,下面程序是OK的,但是当代#的两行先定义就会出现
//得不到想要的值,在后面定义就OK,什么情况呢
// main.c,
// 指针练习7
//
// Created by 李言 on 15/6/15.
// Copyright (c) 2015年 ly. All rights reserved.
//
#include <stdio.h>
//#define SIZE 10
//要求:利用指针,反转数组,如:该数字数组6 7 8 9 ,反转后得到该数组9 8 7 6
int main(){
int len = 0, i = 0, tmp=0, j=0;
// int num[len];##########
// int *p = num;#########
printf("输入数组长度\n");
scanf("%d", &len);//**********先给数组长度变量值,再去用它********
int num[len];
int *p = num;
printf("输入数组元素\n");
for(i=0; i<len; i++){
scanf("%d", p+i);
}
for(i=0; i<len; i++){
printf("%d\t", *(p+i));
}
printf("\n");
// i从第一个数组元素开始,j从最后一个元素开始
for(i=0,j=len-1; i<=j; i++,j--){
tmp = *(p+i);
*(p+i) = *(p+j);
*(p+j) = tmp;
}
// 遍历输出数组
for(i=0; i<len; i++){
printf("%d\t", *(p+i));
}
printf("\n");
return 0;
}
|
|