1.计算机会为变量在存储器中分配空间。
2.局部变量位于栈中。
3.全局变量位于全局变量段。
4.指针只是一个保存“存储器”地址的变量。
5.&运算符可以找到变量的地址。
6.*运算符可以读取存储器地址中的内容
7.*运算符还可以设置存储器地址中的内容
如: int x = 3; int *address = &x;
*address中保存的就是x变量的存储地址
通过&提取x的地址,保存在了*address中
#include <stdio.h>
int main()
{
int x = 3;
int *address = &x;
// 打印结果:一样相等
printf("%p----%p", *address, x);
return 0;
}
讲解:
&运算符用于接收一个数据并获取地址 而 *运算符则是用于接收一个地址并保存数据
c语言中的指针在其他语言中叫法为引用类型,*就算对于地址的解析,生成具体的值
相当于其他语言中的,引用地址的具体值
C语言中声明一个指针变量:
指针变量是什么呢?
答:用来保存内存地址的变量,相当于其他语言的引入地址传给函数假参
声明指针变量:
int *名称(或标识符) = &变量;
如:
int x = 3;
int *address = &x;
&提取了变量x的地址并赋值给了address变量,*就是接收地址来表示这是一个指针变量
这时如果你去改变*address的值你会发现,x的值也被改变了
*address = 666; 那么 x 也被改变成了666
因为*address 和 &x 就是同一个内存地址
如:
#include <stdio.h>
int main()
{
int x = 3;
int *address = &x;
*address = 666;
printf("%i----%i", *address, x);
return 0;
}
如果将格式化输出符,改变%p以16进制格式打印输出
#include <stdio.h>
int main()
{
int x = 3;
int *address = &x;
*address = 666;
printf("%p----%p", *address, x);
return 0;
}
打印结果: 地址相同,自行测试
来源:https://www.cnblogs.com/xiaolantian/p/10744887.html