指针赋值 int *p = arr
时间:2010-11-24 来源:xxha000721
分开来就是:
int i;
int arr[10];
int *p = arr; 这里int *p = arr; 相当于: int *p; p = arr; 也就是说赋值的时候*p只代表它是一个指针变量,而p=arr才是它的赋值语句. 初始化里面的*号表示这个变量是指针类型int *a,则a是(int *)类型,
不在初始化里,*a表示指向的内存单元里存的值
*p表示数组的第一个元素了,即arr[0]; 2.
int main() |
为什么?
int main() |
指针没有初始化,而直接对其赋值操作,危险
另外即使初始化也要初始化个有效的地址,否则也会出错
因为**p 是个二维指针,你写 *p = &a;
只是给*p初始化,但是没有给**p初始化,所以报错。
因为**p 是个二维指针要指向二维的变量
说白了就是 *p 指向一个内存,**p 指向另一个内存,
你只给*p 赋值,没有给**p赋值。
所以包没有初始化错误