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");
}
    *
   ***
  *****
 *******
*********

 

posted @ 2014-09-17 10:48  zuiaishenlin  阅读(271)  评论(0)    收藏  举报