1:函数参数传递
函数最基本的就是参数传递,参数传递基本分为值传递和地址传递。新手很容易养成的一个习惯是先把调用的函数包括参数写好,然后去写定义函数这一步,这样做的一个结果就是往往不知道传递的参数类型究竟是什么。
不好的习惯步骤:
(第一步)char* a="hello";
(第二步)judge(应该传递的参数类型到底是什么??)
(第三步)void judge(这里的形参类型是什么??)
这样写的不好之处在于你会稀里糊涂,虽然知道要类型匹配,但是不知道怎样才算是类型匹配。
正确的步骤应该是:
(第一步)char* a="hello";
(第二步)定义函数:void judge(这里写你需要的参数类型)
(第三步)函数调用(通过定义的函数可以确定传递的参数类型)
2:c=getchar()中,为什么申明的是int c而不是char c?
因为c除了要存储字符以外,还必须能够存储EOF。
最基本的有c=getchar()和scanf两种方法。
4;
char a[100]="hello";
char* p=a;
p+2和p[2]是两个概念。
p+2指的是指针向后偏移,首地址从a变成了l,因此,p+2="llo",而p[2]指的是*(p+2),指的是某个字符,这两者之间是有很大区别的。
5:
(1)int* a=100;
(2)char* p="hello";
为什么第一个是不对的,第二个是正确的,原因在于指针变量的值是地址,int* a=100中,显然这个100是被当做一个地址来看待的,但是也许这是个不合法的地址,我们不能确定,所以会发生错误,在char* p="hello"中,p拿到的是这个字符串的首地址,所以是合法的。