簡體   English   中英

C 中的 char (*)[20] 是什么意思?

[英]What does char (*)[20] in C mean?

我知道下面的代碼無效,因為%s需要一個char *類型的參數,但我給出了一個char **類型的參數。

#include <stdio.h>
struct employee
{
    int id;
    char name[20];
    float salary;
};
int main(void)
{
    struct employee e;
    scanf("%19s", &e.name);//Invalid line
    printf("%s", e.name);
}

但我得到一個不同的警告:

./ Playground / file0. c: In function main:. / Playground / file0. c: 11: 15: warning: format '% s' expects argument of type' char * ', but argument2 has type char (*) [20]' [- Wformat =] 11 | scanf ("% 195", & e. name); | char (*) [20] char *

我很確定char **char (*)[20]在某種程度上是等價的,但不確定它們是怎樣的。

char ** : 指向 char 的指針。

char (*)[20] :指向 char 的指針數組。 — 不確定我是否完全正確。

我不明白。 它們如何等效? 請賜教。

char (*)[20]類型被讀作“指向char大小為 20 的數組的指針。它不是指向char的指針數組。

指向char的指針數組(大小為 20)將是char *[20] 因為這是一個數組,它可以衰減為指向數組第一個元素的指針。 由於數組的元素是char *類型,因此這樣的指針將具有char **類型。

回到您的代碼, e.name的類型為char [20] ,即char大小為 20 的數組。 從那里可以看出&e.name的類型為char (*)[20] ,即指向char大小為 20 的數組的指針。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM