C语言:C语言要注意的事情。
1. func(int arr[], int n); 和 func(int *arr, int n);这两个函数是等价的。
func(int arr[], int n); func(int *arr, int n); //这两个函数是等价的
2. 数组是有前后每个值的下标之间是有数学关联的。例如:数组a第一个值的下标是i,数组长度为n,最末一个值的下标则是n-1-i。当i递增时,(n-1-i)也随着递减。
3. 函数用数组作为参数,例如func(int a[]);本身就是把数组的地址传入函数中,所以如果修改,会修改原数组的内容。不会从新建立一个数组。
4. 数组名虽然“相当于”指针。但是还是由区别的。数组名不能用于加运算。例如:char a[]={"I am here"};while(1){printf("%d",a);a++;if (*a!='\0') break;}是不合法的。必须要把数组名赋值给指针,然后用指针运算。例如:
#include <stdio.h> int main() { char a[]={"I am here"}, *p; p=a; while (1) { printf("%c", *p); p++; if (*p=='\0') break; } return 0; }
5. 有时候,赋值运算也会和其他运算放在一起执行。例如:if ((*a++=*b++)!='\0')。
6. 双for循环需要注意:第一层只负责竖行,二第二层负责横行。例如:
*
**
***
这样的格式,第一层循环只需要考虑竖行就可以了。
7. 指针的问题

8. 平方在C语言中的实现。
for循环中执行 a*=平方;
9.指针的地址必须由多级指针存放。例如:int *p,**q,a=12;p=&a;q=&p;
10.双for(for中嵌套for循环)顺序的时候,是倒三角。倒序的时候,是正三角。(C语言典型例题)例如:
*********
*******
*****
***
*
for (int i=0; i<5; i++) { for (int k=0; k<i; k++) { printf(" "); } for (int j=0; j<2*(5-i)-1; j++) { printf("*"); } printf("\n"); }
for (int i=4; i>=0; i--) { for (int k=0; k<i; k++) { printf(" "); } for (int j=0; j<2*(5-i)-1; j++) { printf("*"); } printf("\n"); }
* *** ***** ******* *********

浙公网安备 33010602011771号