#include <stdio.h> /* 指针和数组 指针和一位数组 一维数组名 一维数组名是个指针常亮 它存放的是一维数组第一个元素地址 程序 printf("%#X\n",&a[0]); printf("%#X\n",a); 输出 0X19FF2C 0X19FF2C 下标和指针的关系 如果p是个指针变量,则 p[i] 永远等价于*(p+i) 界定一个一维数组需要的几个参数【如果一个函数需要一个一维数组,则需要接收该数组的那些信息】 指针变量的运算 指针和二维数组 */ //________________________________________________________________________________________________ /* //一维数组名 int main(void) { int a[5]; //a是数组名,5是数组元素的个数,元素就是变量a[0]--a[4] // int a[3][4]; //3行4列 a[0][0]是第一个元素 a[i][j]是第i+1行j+1列 printf("%#X\n",&a[0]); printf("%#X\n",a); return 0; } */ /* //下标和指针的关系 int main(void) { int a[5] = {1,2,3,4,5}; int i; for (i=0; i<5; ++i) { //printf("%d,%#X\n", a[i],&a[i]); //a[i] == *(a+i) //printf("%d,%#X\n",*(a+i),(a+i)); //printf("%#X\n",a); //a是一个地址 } return 0; } */ //—————————————————————————————————————————————————— /* //界定一个一维数组需要的几个参数【如果一个函数需要一个一维数组,则需要接收该数组的那些信息】 //两个,起始地址和数组长度 void f(int *p,int len) { int i; for(i=0;i<len;i++) { printf("%d,",*(p+i)); } printf("\n"); } int main(void) { int a[5] = {1,2,3,4,5}; int b[6] = {-1,-2,-3,-4,-5,-6}; int c[100] = {1,99,22,33}; f(a,5); f(b,6); f(c,100); return 0; } */ //_____________________________________________________________________________________ void f(int *p,int len) { p[3] = 88; printf("%#X,%d\n",&p[3],p[3]); //0X19FF38,88 } int main(void) { int a[5] = {1,2,3,4,5}; printf("%#X,%d\n",&a[3],a[3]); //0X19FF38,4 f(a,6); printf("%#X,%d\n",&a[3],a[3]); //0X19FF38,88 return 0; }
原文:http://blog.51cto.com/tdcqvip/2121177