啊哈磊_编程从这里起步

标题: 求大神啊啊!这不合常理啊! [打印本页]

作者: 超神级    时间: 2013-8-14 09:49
标题: 求大神啊啊!这不合常理啊!
#include <stdio.h>
#include <stdlib.h>
void f(int*t ,int y)
{t[5]=99;/*这里的t[5]=99;怎么不是*t[5]=99;呢!*t[5]才是这个这个字符地址的值!
t[5]应该是它的地址啊!地址=99应该报错误啊!它占用了不属于他的空间!
我刚才用*t[5]=99;代替t[5]=99;怎么还报错误了啊啊!不合常理啊啊!*/
}
int main()
{int a[100]={1,2,3,4,5,6,7,8,9};
f(a,5);
printf("%d",a[5]);
       
        system("pause");
        return 0;
}

作者: rosynirvana    时间: 2013-8-14 09:49
t[5]就是值,是你搞错了

array[i]是 *(array + i)的语法糖而已
作者: 超神级    时间: 2013-8-14 09:50
求解。。。
作者: 超神级    时间: 2013-8-14 10:59
rosynirvana 发表于 2013-8-14 09:49
t[5]就是值,是你搞错了

array是 *(array + i)的语法糖而已


array是 *(array + i)的语法糖而已
但是我用*(array + i)也不应该报错误啊!
作者: rosynirvana    时间: 2013-8-14 11:07
你写的是 *array[i]吧

array[i]等同于 *array[i], 刚才少打了几个字
作者: 超神级    时间: 2013-8-14 11:59
rosynirvana 发表于 2013-8-14 11:07
你写的是 *array吧

array等同于 *array, 刚才少打了几个字

问题以想明白!谢谢
作者: rosynirvana    时间: 2013-8-14 12:03
好像论坛会把代码转义掉……orz

后来人不要看上面的解释了,被论坛搞乱了
作者: 超神级    时间: 2013-8-15 11:33
rosynirvana 发表于 2013-8-14 12:03
好像论坛会把代码转义掉……orz

后来人不要看上面的解释了,被论坛搞乱了

发帖子的时候老有问题
作者: 4399APPLE    时间: 2013-10-8 10:37
你可以理解成“C语言中根本没有数组这种东西”,有的只是连续分配空间的一种语法糖。
数组在绝大多数情况下都会转换成一个指针,例如
int a[] = {1,2,3};
a[1];
复制代码
a[1]其实不是读取数组元素,编译器总是把它处理成 *(a + sizeof(int) * 1),所以你甚至可以写 1[a]

函数传递参数时,如果参数是数组,则会转换成指向数组首地址的指针
也就是你写
void fun(int a[]);
复制代码
编译器会自动转化为
void fun(int* a);
复制代码
如果你写
void fun(int a[10]);
复制代码
也会被转化为
void fun(int* a);
复制代码
数组的长度是无法用一个参数就传递进去的,因为数组这时候被转换成了指针
作者: rosynirvana    时间: 2013-10-8 12:55
4399APPLE 发表于 2013-10-8 10:37
你可以理解成“C语言中根本没有数组这种东西”,有的只是连续分配空间的一种语法糖。
数组在绝大多数情况下 ...

把我在另一个帖子里写的东西复制过来,有意思?
作者: 4399APPLE    时间: 2013-10-8 16:45
当然有意思
把我在另一个帖子里写的东西复制过来,有意思?

作者: 4399APPLE    时间: 2013-10-8 16:52
这不是灌水!!!!!!!!!
作者: 超神级    时间: 2013-10-8 17:30
4399APPLE 发表于 2013-10-8 16:52
这不是灌水!!!!!!!!!

这叫浇地么!》》....
作者: 4399APPLE    时间: 2013-10-9 10:52
当然叫下雨
作者: 4399APPLE    时间: 2013-10-9 10:52
当然叫下雨
这叫浇地么!》》....

作者: 4399APPLE    时间: 2013-10-13 12:36
超神级 发表于 2013-10-8 17:30
这叫浇地么!》》....

当然叫下雨
作者: 超神级    时间: 2013-10-13 16:54
4399APPLE 发表于 2013-10-13 12:36
当然叫下雨

                                       
作者: 4399APPLE    时间: 2013-10-13 17:14
超神级 发表于 2013-10-13 16:54

或者叫尿尿······




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2