“程序员就在于不放弃任何一个疯狂操作的机会”
我们存储东西时给计算机编写了地址,而内存也是一样,就像楼一样,一个一个格子一层一层的
那么有几个问题:
1.内存是怎么编号的2.一个内存格子是多大空间
首先,32位机器,64位机器指的是地址线,可以通电,正电是1,负电是0,我们利用此把电信号转化为数字信号,这就是二进制序列。
如果是32位机器,我们把32位排列组合所有的可能,即2的32次方,作为编号,来作为地址分配给每一个内存单元。一个内存单元给1字节byte的存储空间
我想取一个地址,a不是占4个字节吗?我们取到第一个地址就行,取到第一个就能顺次找到后面的
但地址也要存吧,而pa就是存放地址的,所以pa就叫指针变量,写法是int * pa=&a;这个*就是提示计算机,pa是指针,而int是指针执行的对象是int类型的,同理,比如我要整个字符类型的,就这么写:char*pc=&ch;
(怎么感觉指针就是存地址用的呢)
那取地址干嘛呢?怎么找他呢?
*pa=20;//*pa就是通过pa里面的地址找到a,能改a的值
*就是解引用操作符(我费了这么大劲就是为了改个数?)(指针好像就是地址。。。)
附带小菜:
//int main()
//{
// int* pa = &pa;
//
// return 0;
//}//F10调试找地址
//指针 就是 地址
//int main()
//{
// int a = 10;
//
// int* pa = &a;
//
// *pa = 20;//* 解引用操作 | *pa就是通过pa里边的地址,找到a
//
// printf("%d\n", a);
//
// return 0;
//}//(指针找地址“抄家”就为了改个函数值?总感觉学了个寂寞)
32位机器指针的大小是相同的,都是4,不信sizeof自己去求,64位的都是8,为啥是这样,因为指针服务于地址,地址需要多大,配套指针多大。