scanf使用注意事项

 

#include<stdio.h>
int main(){
    int a[100];
    int n, i;
    scanf("%d", &n);//输入个数
    for (i = 0; i<n; i++)scanf("%d", &a[i]);//这里也可以用 scanf("%d",a+i);
    for (i = n - 1; i>0; i--)printf("%d ", a[i]);
    printf("%d\n", a[i]);

    /*
    int a[2][3] = {
        { 1, 2, 3 },
        { 4, 5, 6 },
    };
    int *edge;
    edge = a;
    while (*edge != NULL){
        edge = &((*edge)->next);
        printf("%c", edge);
    }
    */

}

 

 

说明:

scanf传得必须是指针,也就是地址。 
比如int a;就需要&a;但是如果是数组,数组本身表示的是数组首元素的地址。也就是int a[10]里a就表示a[0]的地址;那a[3]的地址呢?可以这样,&a[3];这就是加&的数组,如果不加呢,可以这样(a+3)就可以了,a是a[0]的地址,那么a+3就是a[3]的地址。 
所以数组的scanf赋值是要加&的。 
但是printf里因为输出的不是地址而是值所以不用加&。

 

posted on 2017-02-11 09:45  小乔流水人家  阅读(116)  评论(0)    收藏  举报

导航