int a[5]={0,1,2,3,4}; 定义了个一维数组,书上说a的类型是int *
我觉得从这里就不大对了 勉强说 a的类型可以是int * 但这里其实是个常量 不能改的 所以应该是个const int * ???
那么可不可以这样理解: 对于一个指针来说: int *p; 计算机先设置一个地址A 也就是&p 在里面存放一个地址B 这个地址B就是指针指向的地址。 那对于a,和它相关的只有一个地址,就是&a[0],认为它是指针类型,那它是否和上面的p一样,也是第一个地址里存着第二个地址,只不过这儿两 个地址都是&a[0],也就是说,这个指针是自己指向自己”
后面全部没看懂 但有一点你明白就可以了 指针变量 也是变量 只不过它里面存的不是1 2 3 这样的数 存的其实是个地址 用于寻址也就是访问其他变量 而且它的加减运算等操作也和普通的数不大一样 除了这两个明显的区别 指针和其他变量是一样的 不是像你想的那么神秘 那么复杂。。
如果你学过汇编就会发现 指针不过就是实现了内存寻址的一种方法罢了 其实没这个东西 也可以 只不过离硬件远了 而且比较麻烦 至于效率么 呵呵 一般情况下效率的提升不大
我觉得从这里就不大对了 勉强说 a的类型可以是int * 但这里其实是个常量 不能改的 所以应该是个const int * ???
那么可不可以这样理解: 对于一个指针来说: int *p; 计算机先设置一个地址A 也就是&p 在里面存放一个地址B 这个地址B就是指针指向的地址。 那对于a,和它相关的只有一个地址,就是&a[0],认为它是指针类型,那它是否和上面的p一样,也是第一个地址里存着第二个地址,只不过这儿两 个地址都是&a[0],也就是说,这个指针是自己指向自己”
后面全部没看懂 但有一点你明白就可以了 指针变量 也是变量 只不过它里面存的不是1 2 3 这样的数 存的其实是个地址 用于寻址也就是访问其他变量 而且它的加减运算等操作也和普通的数不大一样 除了这两个明显的区别 指针和其他变量是一样的 不是像你想的那么神秘 那么复杂。。
如果你学过汇编就会发现 指针不过就是实现了内存寻址的一种方法罢了 其实没这个东西 也可以 只不过离硬件远了 而且比较麻烦 至于效率么 呵呵 一般情况下效率的提升不大