# include <stdio.h> int main(void) { int * p; //等价于 int *p 也等价于 int* p; int i = 5; char ch = 'A'; //p = 5; //error //p = &ch; //error //p = ch; //error p = &i; // *p 表示是以p的内容为地址的变量 *p = 99; printf("i = %d, *p = %d\n", i, *p); return 0; }
一维数组名含义示例:
# include <stdio.h> int main(void) { int a[5]; //5是数组名 5是数组元素的个数 元素就是变量 a[0] -- a[4] //int a[3][4]; //3行4列 a[0][0]是第一个元素 a[i][j]是第i+1行j+1列 //a[0] 与 a[4] 他们的数据类型都是一样的, a[0] 和 [a1] 是连续的 int b[5]; //a = b; //error a是指针常量 // int %d // long int %ld //char %c //float %f //double %lf //#X 以16进制输出 printf("%#X\n", &a[0]); printf("%#X\n", a); return 0; }
输出数组内容的函数:
# include <stdio.h> // f函数可以输出任何一个一维数组的内容 void f(int * pArr, int len) { int i; for (i=0; i<len; i++) printf("%d ", *(pArr+i)); //*pArr *(pArr+1) *(pArr+2) 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); //a是 int *类型 f(b, 6); f(c, 100); return 0; }
第二个一维数组示例:
# include <stdio.h> void f(int * pArr, int len) { pArr[3] = 88; // 等价于 *(pArr+3) = 88 指针地址为什么+3就表示是第四个,因为数组是连接的,所以地址+3就表示第四个,pArr表示数组的第一个值 } int main(void) { int a[6] = {1, 2, 3, 4, 5, 6}; printf("%d\n", a[3]); f(a, 6); printf("%d\n", a[3]); return 0; }
小例子:
# include <stdio.h> void f(int * pArr, int len) { int i; for (i=0; i<len; i++) printf("%d ", pArr[i]); // *(pArr+i) 等价于pArr[i] 也等价于b[i] 也等价于 *(b+i) pArr[i] = printf("\n"); } int main(void) { int a[5] = {1, 2, 3, 4, 5, 6}; int b[6] = {-1, -2, -3, -4, 5, -6}; int c[100] = {1, 99, 22, 33}; f(b, 6); return 0; }