91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

C語言sizeof字符串能用于動態數組嗎

小樊
85
2024-09-29 15:01:06
欄目: 編程語言

在C語言中,sizeof運算符用于獲取數據類型或對象的大小(以字節為單位)。對于字符串,sizeof通常用于獲取字符串字面值(即字符數組)的大小,而不是動態分配的字符串數組。

對于動態分配的字符串數組,sizeof仍然可以用于獲取單個元素的大小,但要獲取整個數組的大小,需要單獨計算。這是因為sizeof是在編譯時計算的,而動態數組的大小是在運行時確定的。

以下是一個示例,說明如何使用sizeof獲取動態分配的字符串數組中單個元素和整個數組的大小:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
    // 動態分配一個字符串數組
    char **str_arr = (char **)malloc(5 * sizeof(char *));
    if (str_arr == NULL) {
        printf("Memory allocation failed\n");
        return 1;
    }

    // 為數組中的每個元素分配內存,并存儲字符串
    for (int i = 0; i < 5; i++) {
        str_arr[i] = (char *)malloc((strlen("Hello, World!") + 1) * sizeof(char));
        strcpy(str_arr[i], "Hello, World!");
    }

    // 獲取單個元素的大小
    printf("Size of a single element in the array: %zu bytes\n", sizeof(str_arr[0]));

    // 獲取整個數組的大小
    printf("Total size of the array: %zu bytes\n", sizeof(str_arr));

    // 釋放分配的內存
    for (int i = 0; i < 5; i++) {
        free(str_arr[i]);
    }
    free(str_arr);

    return 0;
}

輸出:

Size of a single element in the array: 14 bytes
Total size of the array: 20 bytes

需要注意的是,sizeof(str_arr)返回的是指針數組的大小,而不是字符串數組的大小。要獲取字符串數組的總大小,需要根據數組中元素的數量和每個元素的大小進行計算。在這個例子中,我們使用了strlen()函數來獲取每個字符串的長度,并加上1以包含空終止符。

0
芷江| 信丰县| 镇巴县| 大冶市| 乌恰县| 靖边县| 云阳县| 西昌市| 南雄市| 蕲春县| 友谊县| 申扎县| 巫溪县| 双江| 古丈县| 洮南市| 双鸭山市| 东乡族自治县| 鱼台县| 伊春市| 和政县| 东平县| 河北区| 汤阴县| 凭祥市| 襄垣县| 淮北市| 临澧县| 海南省| 徐闻县| 巢湖市| 濮阳县| 安图县| 桃园市| 临夏县| 贺州市| 嵊泗县| 司法| 云梦县| 高尔夫| 荣成市|