我不确定如何以不同的方式调用这两个指针,所以请更正我的条款。
#include <stdio.h>
int main()
{
int arr[3]={10,20,30};
int * ptr = &arr[0];// arr
return 0;
}
arr和* ptr之间有什么区别吗? 两者都指向同一个地址,但区别在于什么。
答案 0 :(得分:1)
arr
是一个数组,ptr
是int
类型的指针。
存在差异。我列举几个
sizeof(arr)
与sizeof(ptr)
ptr++
执行ptr
指针操作,而arr++
是无效操作。关于指针与数组有什么区别的评论我已经回答了你的问题
int a = 10;
int b[5] = {1,2,3,45};
int *p = &a;
b = &a; /* not valid */
b
是一个数组,而不是指针,因此它不能保存变量的地址。
p = b;
p = p +1;
printf("%d\n",*p); /* valid as p is pointing to second element in the array */
b = b+1;
无效,因为数组不能是可修改的左值
答案 1 :(得分:-1)
&#39; arr和* ptr&#39;
之间是否存在一些差异是的,有。例如,sizeof(*ptr)
的大小为int
,即sizeof(int)
,而sizeof(arr)
是整个数组的大小,等于3*sizeof(int)
。