C语言基础问题
Mr.杨. 2016-12-18 09:57:51 int i;
scanf("%p", &i);
为这么这里必须加取地址符?
char arr[10] = "hello";
scanf("%p", arr);
scanf("%p", &arr);
而这里加或不加取地址符都可以?
1.变量是内存中特定空间的别名
2.变量i所代表的的内存空间中保存的是整数,只有获取变量i所代表的内存空间地址才能往该内存空间存入数据
那么问题来了 :
1.scanf("%p", arr);
arr保存的是堆存中字符串"hello"的首地址,
不加&获取的是变量arr所代表的内存区域的中的数据,即字符串"hello"的首地址
因而可以往"hello"所在的内存中存入数据
2.scanf("%p", &arr);
加&获取的是变量arr所代表的内存的地址
既然获取的变量arr所代表的内存地址,
那么为什么可以吧数据存入字符串所在的内存区域呢?