關於指針的幾個問題

關於指針的幾個問題

在設計輸入數字輸出對應月份的程序時發現關於指針的如下幾個注意事項
1.以下兩種表達方式均可

---------第一種方式
int a;
int *p=&a;
---------第二種方式
int a;
int *p;
p=&a;
//所達到的效果是一樣的//

2.關於字符串數組的問題
在C語言當中,字符串數組可以使用: char a[] [10]; 或者 char *a[]; 表示
第一種表示方式固定了每個字符串的最大大小。第二種沒有字符串的大小限制。

 char *month[] = {"January","February","March","April",
            "May","June","July","August","September","October",
            "November","December"};
// ---------兩種方法都可以//
 char month_name[12][4]={{"JAN"},{"FEB"},{"MAR"},{"APR"}
            ,{"JUN"},{"JUL"},{"AUG"},{"SEP"},{"OCT"},{"DEC"}};

3.關於printf中是否添加*的問題
①使用第二種字符串數組的例子:(printf有兩種表達方式)

#include <stdio.h>
int main()
{
    int a;
    char *m[]={"jan","feb","mar","apr","may","jun","jul",
    "aug","sep","oct","nov","dec"};
    printf("please input your number\n");
    scanf("%d",&a);
    printf("%s",m[a-1]);//此處可以換爲下面的另一種表達
    return 0;
}
//另一種表達//
    printf("%s",*(m+a-1));

②使用第一種字符串數組的例子:

#include <stdio.h>
int main()
{
    int a;
    char m[12][4]={{"JAN"},{"FEB"},{"MAR"},{"APR"}
        ,{"JUN"},{"JUL"},{"AUG"},{"SEP"},{"OCT"},{"DEC"}};
    char *p;
    printf("please input your number\n");
    scanf("%d",&a);
    p=m[a-1];//此處不可以令p=m[0],後面再用類似p+a-1類似的語句否則會出現截斷的情況,如輸入2出現AN。
    printf("%s",p);//此處不要加*,字符串數組%s不加*,會自動尋找
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章