#include<stdio.h>
#define SIZE 4
int main()
{
int urn[5] = { 100,200,300,400,500 };
int* ptr1, * ptr2, * ptr3;
//指针赋值需要类型兼容
ptr1 = urn;
ptr2 = &urn[2];
ptr3 = &urn[4];
//指针解引用 ,取值 指针也是变量 ,可以取地址
printf("pointer value, deferenced pointer , pointer address\n");
printf("ptr1 = %10p, *ptr1 = %10d &ptr = %10p \n", ptr1, *ptr1, &ptr1);
//指针与整数相加,会将整数x对于数据类型大小,加上原来的值 超过了数组范围,除了数组后第一个位置,其他未定义
//指针加法
printf("adding an int to pointer\n");
printf("ptr1 + 4 = %10p, *(ptr1+4) = %10d", ptr1 + 4, *(ptr1 + 4));
//指针递增
ptr1++;
printf("values after ptr1++\n");
printf("ptr1 = %20p, *ptr1 = %20d, &ptr = %20p\n", ptr1, *ptr1, &ptr1);
//指针递减
printf("values after ptr2--\n");
ptr2--;
printf("ptr2 = %20p , *ptr2 = %20d ,&ptr2 = %20p", ptr2, *ptr2, &ptr2);
ptr1--; ptr2++;
printf("pointer reset to original value \n");
printf("ptr1 = %20p ,ptr2 = %20p", ptr1, ptr2);
//指针互减 结果是2 意指元素之间相差两个int 即往前数两个
printf("subtracting one pointer from another \n");
printf("ptr2 = %20p , ptr1 = %20p , ptr2- ptr1= %td", ptr2, ptr1, ptr2 - ptr1);
//指针减去整数
printf("subtract one int from one pointer \n");
printf("ptr3 = %d ,ptr3 - 2 = %d", *ptr3, *(ptr3 - 2));
}
c学习-指针加减操作
最新推荐文章于 2024-07-23 22:07:33 发布