int *a ,我把a看作一个指针 这个指针指向一个int型的变量() 为什么a也可以指向一个int型的一维数组呢

2024-11-28 19:24:21
推荐回答(2个)
回答1:

指针其实就是存储的变量的地址,我们把内存看成一个个房间,指针就是存储房间号。所以我们通过指针可以访问到具体的房间,但是如果我们把房间号(地址)加一呢,就访问到了后搜竖面一个房间了。数组就是这样的比如int a[10],访问第二个姿没位置是a[1],但是我们知道数组名就是数组的首地址,所以,我们通过*(a+1)的方式也能访问到第二个数。迹漏纳所以指针只是一个地址,它不知道它指向的到底是一个变量,还是一组变量。
还有,你的“假如 int b[]; 如果用b=1; 这个时候就是默认把1传递给了数组b[0]”这句话是错误的,b=1的意思是把数组的地址赋值为1,这样编译可能不会出错,但是运行的时候一定会错误的。

回答2:

一排房子春答,每个门都有一个编号,现在告诉你第一个门的号码是1000(指针),而且门牌号是连号的(数组元素是顺序排列的),且一共有十间(数组长度扒信慧),那么1000+1就是下个门牌号(指针运算),你是不是可以通过第一个坦燃地址挨家挨户找到所有房子了?(通过指针遍历所有元素)

反过来理解,如果指针只能访问一个地址(只有一种情况,那就是常量指针),那直接用普通变量好了,不是更简单,而指针岂不是多余?!普通变量也有地址,编译器会帮你管理,你只要访问变量名即可,何苦使用难用的指针,你说是不是。