面試題總結 – C 語言 – 資料聲明(data declaration)

來源:互聯網
上載者:User

1.用變數a給出下面的定義

a) an integer

int a;

b) a pointer to an integer

int *a;

c) a pointer to a pointer to an integer

int **a;

d) an array of 10 integers

int a[10];

e) an array of 10 pointers to integers

int* a[10];

f) a pointer to an array of 10 integers

int (*a)[10];

g) a pointer to a function that takes an integer as an argument and returns an integer

int (*func)(int);

h) an array of ten pointers to functions that take an integer argument and return an integer

int (*func[10])(int);

2. Typedef 在C語言中頻繁用以聲明一個已經存在的資料類型的同義字。也可以用前置處理器做類似的事。例如,思考一下下面的例子:
#define dPS struct s *
typedef struct s * tPS;

以上兩種情況的意圖都是要定義dPS 和 tPS 作為一個指向結構s指標。哪種方法更好呢?(如果有的話)為什嗎?
這是一個非常微妙的問題,任何人答對這個問題(正當的原因)是應當被恭喜的。答案是:typedef更好。思考下面的例子:
dPS p1,p2;
tPS p3,p4;

第一個擴充為
struct s * p1, p2;

上面的代**定義p1為一個指向結構的指,p2為一個實際的結構,這也許不是你想要的。第二個例子正確地定義了p3 和p4 兩個指標。

3.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.