39.C語言陣列學習的有關整理

不爱美女爱辣条發表於2024-04-30

首先還是關於這兩個東西

  • sizeof() 用於計算所佔空間大小
  • strlen() 只用於求字串長度
/**
 * sizeof 計算所佔空間大小 \0也會計算
 * strlen 只能用來求字串長度 直到找到字串結束標誌\0
 * */
char arr1[]={'a','b','c'};  // a b c
char arr2[]="abc";   // a b c \0
    printf("%d\n",sizeof(arr1));	3
    printf("%d\n",sizeof(arr2));	4
    printf("%d\n",strlen(arr1));    //隨機值 找不到字串結束標誌\0
    printf("%d\n",strlen(arr2));	3

陣列長度計算:
一維陣列數= sizeof(array)/sizeof(array[0]);
二維陣列行數 = sizeof(array)/sizeof(array[0]);
二維陣列列數 = sizeof(array[0])/sizeof(array[0][0]);


陣列下標從0開始
關於二維陣列[][]第二個列不能省略

    int arr3[]={1,2,3,4};
    //取出的是首元素的sizeof(地址)
    printf("%p\n",arr3);
    printf("%p\n",&arr3[0]);
    //取出的是整個陣列的地址
    printf("%p\n",&arr3);

還有一些練習題:

陣列的下標

必須是整形常量表示式

注意注意:
其包含的元素不能超過其下標

是正確的
#define M 8
int a[M]
錯誤:
int M=8;
int a[M];
關於兩個字串比較不能使用關係運算子
要使用strcmp函式
關於字元之類的函式:

image

關於二維陣列在記憶體中存放順序 以行為主順序存放

image

輸出為9
a b \n \\ 0 1 2 2 \\ \0結束標誌
   char s[] = "ab\n\\0122\\\0";
    printf("%d", strlen(s));

image

china直接複製到str陣列裡面  輸出5
  char str[] = "String";
  printf("%d\n", strlen( strcpy(str, "China")));

image

   char str[10]="12345";
   讀取覆蓋原來的陣列內容
    gets(str);
    strcat(str,"def");
    printf("%s",str);
注意注意for迴圈的對其兩層互不影響
\t 縮排相當於Tab鍵
    int a[10] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
    for (int i = 0; i < 10; ++i)
        a[i] = add(a[i], i);
    for (int i = 0; i < 10; ++i)
        printf("%d\t", a[i]);

相關文章