#include <stdio.h> int main () { int var1; char var2[10]; printf("var1 变量的地址: %p ", &var1 ); printf("var2 变量的地址: %p ", &var2 ); return 0; }
#include <stdio.h> int main () { int var = 20; /* 实际变量的声明 */ int *ip; /* 指针变量的声明 */ ip = &var; /* 在指针变量中存储 var 的地址 */ printf("Address of var variable: %p ", &var ); /* 在指针变量中存储的地址 */ printf("Address stored in ip variable: %p ", ip ); /* 使用指针访问值 */ printf("Value of *ip variable: %d ", *ip ); return 0; }
#include <stdio.h> int main () { int *ptr = NULL; printf("ptr 的地址是 %p ", ptr ); return 0; }
#include <stdio.h> const int MAX = 3; int main () { int var[] = {10, 100, 200}; int i, *ptr; /* 指针中的数组地址 */ ptr = var; for ( i = 0; i < MAX; i++) { printf("存储地址:var[%d] = %x ", i, ptr ); printf("存储值:var[%d] = %d ", i, *ptr ); /* 移动到下一个位置 */ ptr++; } return 0; }
#include <stdio.h> const int MAX = 3; int main () { int var[] = {10, 100, 200}; int i, *ptr; /* 指针中最后一个元素的地址 */ ptr = &var[MAX-1]; for ( i = MAX; i > 0; i--) { printf("存储地址:var[%d] = %x ", i-1, ptr ); printf("存储值:var[%d] = %d ", i-1, *ptr ); /* 移动到下一个位置 */ ptr--; } return 0; }
#include <stdio.h> const int MAX = 3; int main () { int var[] = {10, 100, 200}; int i, *ptr; /* 指针中第一个元素的地址 */ ptr = var; i = 0; while ( ptr <= &var[MAX - 1] ) { printf("Address of var[%d] = %x ", i, ptr ); printf("Value of var[%d] = %d ", i, *ptr ); /* 指向上一个位置 */ ptr++; i++; } return 0; }
#include <stdio.h> int main () { int var; int *ptr; int **pptr; var = 3000; /* 获取 var 的地址 */ ptr = &var; /* 使用运算符 & 获取 ptr 的地址 */ pptr = &ptr; /* 使用 pptr 获取值 */ printf("Value of var = %d ", var ); printf("Value available at *ptr = %d ", *ptr ); printf("Value available at **pptr = %d ", **pptr); return 0; }
#include <stdio.h> #include <time.h> void getSeconds(unsigned long *par); int main () { unsigned long sec; getSeconds( &sec ); /* 输出实际值 */ printf("Number of seconds: %ld ", sec ); return 0; } void getSeconds(unsigned long *par) { /* 获取当前的秒数 */ *par = time( NULL ); return; }
#include <stdio.h> /* 函数声明 */ double getAverage(int *arr, int size); int main () { /* 带有 5 个元素的整型数组 */ int balance[5] = {1000, 2, 3, 17, 50}; double avg; /* 传递一个指向数组的指针作为参数 */ avg = getAverage( balance, 5 ) ; /* 输出返回值 */ printf("Average value is: %f ", avg ); return 0; } double getAverage(int *arr, int size) { int i, sum = 0; double avg; for (i = 0; i < size; ++i) { sum += arr[i]; } avg = (double)sum / size; return avg; }
#include <stdio.h> #include <time.h> #include <stdlib.h> /* 要生成和返回随机数的函数 */ int * getRandom( ) { static int r[10]; int i; /* 设置种子 */ srand( (unsigned)time( NULL ) ); for ( i = 0; i < 10; ++i) { r[i] = rand(); printf("%d ", r[i] ); } return r; } /* 要调用上面定义函数的主函数 */ int main () { /* 一个指向整数的指针 */ int *p; int i; p = getRandom(); for ( i = 0; i < 10; i++ ) { printf("*(p + [%d]) : %d ", i, *(p + i) ); } return 0; }