#include<stdio.h>intmain(){int a =50;//a的本质是值int* b =&a;//b的本质是指针变量printf("b=%d\n", b);//这里直接打印出b的值//b作为一个指针变量,直接打印出来的就是a的内存地址,而不是a的值printf("*b=%d\n",*b);//对b表示的内存地址进行*操作(取值操作)//利用地址取值后,得到的就是存储于这个地址的a的值printf("&b=%d\n",&b);//对b变量进行取地址操作//b虽然是存储地址,但其作为指针变量,本质还是变量//变量就必然需要内存来存储,也必然有自己的内存地址//所以,取地址后的数据其实就是b的内存地址}
#include<stdio.h>voidmain(){int score[7]={95,89,56,78,45,59,77};int sum =0;int* p1;for(p1 = score; p1 <&(score[7]); p1++){//这里第一个位置还可以用p1=&(score[0])printf("%d\n",*p1);}}
ps:数组名就是数组首位元素的地址
指针运算
intmain(){int* p[5]={1,2,3,4,5};int* num =&p[0];int* pnum = num +2;
ptrdiff_t n =(pnum +1)- num;//两个指针变量之间做差,得到结果是一种有符号整型//表示两个指针在内存中的距离(以数组元素长度为单位,而不是字节长度)printf("*num=%d,*pnum=%d\n",*num,*pnum);printf("(pnum+1)-num=%d\n", n);return0;}
所谓指针,本质就是标识内存中某个位置的数据在日常学习中,我们需要了解的只是:内存中每个位置都是由独一无二的地址标识内存中的每个位置都包含一个值基本概念运算符 ‘*’通过指针访问指向的值的过程称为间接访问(indirection)或者叫做解引用指针(dereferencing the pointer),执行间接访问的操作符就是单目运算符’*’这里一定要注意,在变量声明时使用的’’,...