C语言数组和指针以及指针运算范例
下面的代码将会让你看到:数组和指针很像,指针也可以进行运算。
注意:下面的程序在 VC6.0 下编译不能通过,因为在 VC6.0 中数组长度不能为变量和不定值;请在 Linux 的 GCC 或 Window 的 MinGW 下编译。
笔者顺便推荐一款国产C语言开发神器 -- C-Free 5.0 -- 默认编译器是 MinGW,可以随意切换多个编译器,详情请查看:C-Free 5.0下载[带注册码][赠送破解版][最性感的C、C++开发工具IDE]
Read the x array:
Enter integer [0 to terminate] : 1 23 45 333 667 0
The x array is:
1 23 45 333 667
Read the y array:
Enter integer [0 to terminate] : 343 565 3 456 8 2 0 456
The y array is:
343 565 3 456 8
2
Printing x after having copied 4 elements from y starting at y[3] into x starting at x[2]
1 23 456 8 2
注意:下面的程序在 VC6.0 下编译不能通过,因为在 VC6.0 中数组长度不能为变量和不定值;请在 Linux 的 GCC 或 Window 的 MinGW 下编译。
笔者顺便推荐一款国产C语言开发神器 -- C-Free 5.0 -- 默认编译器是 MinGW,可以随意切换多个编译器,详情请查看:C-Free 5.0下载[带注册码][赠送破解版][最性感的C、C++开发工具IDE]
#include <stdio.h> #define SIZE 8 // 从数组 a 中复制 n 个元素到数组 b 中 void cpIntArray(int *a, int *b, int n) { for(;n>0;n--) *a++=*b++; } // n 是数组 a 的元素个数;这些元素将被输出,5 个一行 void printIntArray(int a[], int n) { int i; for (i=0; i<n; ){ printf("\t%d ", a[i++]); if (i%5==0) printf("\n"); } printf("\n"); } // 最多读入 nmax 个整数并保存在数组 a 中,遇到指定的值时结束输入 int getIntArray(int a[], int nmax, int sentinel) { int n = 0; int temp; printf("Enter integer [%d to terminate] : ", sentinel); do { scanf("%d", &temp); if (temp==sentinel) break; if (n==nmax) printf("array is full\n"); else a[n++] = temp; }while (1); return n; } int main(void){ int x[SIZE], nx; int y[SIZE], ny; printf("Read the x array:\n"); nx = getIntArray(x,SIZE,0); printf("The x array is:\n"); printIntArray(x,nx); printf("Read the y array:\n"); ny = getIntArray(y,SIZE,0); printf("The y array is:\n"); printIntArray(y,ny); cpIntArray(x+2,y+3,4); // 注意上面的 x+2 // x 为数组 x 的起始地址,+2 代表按照 x 的数据类型(整数)将指针前移两个单元 // 所以第一次 +2 就代表数组的第三个元素 x[2] // 可见,指针是可以进行运算的 // y+3 同样可以这样理解 printf("Printing x after having copied 4 elements\n" "from y starting at y[3] into x starting at x[2]\n"); printIntArray(x,nx); }可能的输出结果:
Read the x array:
Enter integer [0 to terminate] : 1 23 45 333 667 0
The x array is:
1 23 45 333 667
Read the y array:
Enter integer [0 to terminate] : 343 565 3 456 8 2 0 456
The y array is:
343 565 3 456 8
2
Printing x after having copied 4 elements from y starting at y[3] into x starting at x[2]
1 23 456 8 2