#include<stdio.h>
int main()
{
int i=0;
printf("%d",&i);//这个&是一个动词,用于取出变量的地址并作为&i的值
//但是编译器会输出warning,因为输出地址应该用%p
int q=&i;//在这一步会有warning,提示你&i,即int类型的地址和int q的类型不一样;
//正确的做法是定义一个全新的变量类型来存放int类型的地址,即int*(实际上并非如此,但是你可以这样理解)
int* p=&i;
//如果要定义两个指针,应该这样写:
int *p,*q;//而不是 int*p,q;
//在具体使用的时候,我们应该注意:p是一个十六进制的数,是个地址,*p是p这个地址处的值,是个int
所以,int*p=2,和*p=2中的*p,是不一样的。前者只是p=2,后者是p所指的地址上的值=2,换句话说,前者是说明了某个房间号是2,而后者是说住在房间号为p的那个人是2;
从数学上讲,*p = i,是一种双向捆绑;改变*p则i必变,改变i则*p必变,而松绑的条件是改变p的值;
void f(*p)//和void f(int* p)是不同的,因为前者的形参是一个int数值,而后者是一个
void f(int a[])//当函数里面传进一个数组的时候,实际上形参接收的是数组的首地址
实际上,个人认为没必要创立数组这个概念。所谓数组,就是常量指针,以及该指针在该指针所指的地址处往后整数个字节;
}
cpp学习(2)c指针复习
最新推荐文章于 2024-08-08 22:23:27 发布