5voidb10charc誰能給我解釋下

2021-03-03 21:42:52 字數 5847 閱讀 6875

1樓:上帝來自地球

我給你簡化一下

1.typedef char **ppch;

2.typedef void *(vapfunc[10])(ppch y);

3.typedef char *(*t)(vapfunc x);

從而題目可簡寫為:

t a[4];

現在應該很清楚了吧,呵呵

詳細解釋,就是:

a是一個指標陣列,指標的型別是t,t所指向(返回型別為char *,形式引數型別為vapfunc的函式);

c語言,解釋下 char(*(*x()[5])() 的意思

2樓:匿名使用者

從內向外分析:

*x() : x是一個無引數函式,該函式返回一個指標*(*x())[5] : 由於c語言宣告的優先順序規則是字尾優先於字首,所以這裡就要先考慮後面的[5],再看前面的星號,於是得出:

x是一個無參函式,該函式返回一個指標,返回的這個指標指向一個有5個指標元素的陣列。

char(*(*x())[5])() : 依然先看字尾得知這是個函式,而且沒有引數,再看字首,結合字尾可知這是一個返回值型別為char的函式,再結合對*(*x())[5]的分析得出最後結論:

x是一個無引數函式,該函式返回一個指標,返回的這個指標指向一個有5個指標元素的陣列,該陣列的每個元素都可指向一個返回值型別是char的元素函式。

3樓:匿名使用者

typedef宣告自定義資料型別,配合各種原有資料型別來達到簡化程式設計的目的。對於char (*(*x())[5])(); 我們可利用typedef來簡化。

先定義:typedef char (*fun)(); 那麼:char (*(*x())[5])(); => fun (*x())[5];再定義:

typedef fun a[5]; 那麼:fun (*x())[5]; => a *x(); 對於這種形式正是我們最熟悉的函式宣告型別。

根據上面的簡化模式,可逐步描述char (*(*x())[5])();的含義:

第一步:a *x(); 宣告x是一個輸入引數為空且返回a的指標型別的函式。

第二步:fun (*x())[5]; 宣告x是一個輸入引數為空且返回指向含有5個fun型別陣列的指標的函式。

第三步:char (*(*x())[5])(); 宣告x是一個輸入引數為空且返回指向含有5個指向函式指標且返回值為字元型別的陣列指標的函式。

利用上述的方法,幾乎可以理解任何複雜型別的宣告,例如linux系統呼叫函式signal的函式原型如下:

void (*signal(int signo,void (*func)(int))) (int);

對於該函式原型,給人的第一感覺就是複雜,不知從何下手。其實同樣可以利用上面所講的typedef宣告來簡化:先定義typedef void (*sighandler_t)(int); 那麼void (*signal(int signo,void (*func)(int))) (int); => sighandler_t signal(int signo, sighandler_t handler);

對於sighandler_t signal(int signo, sighandler_t handler); 就和我們常見的函式宣告非常類似了,唯一不同的是sighandler_t不是我們常見的基本資料型別,假如你不知道sighandler_t具體是什麼型別,為了快速理解sighandler_t signal(int signo, sighandler_t handler);的含義,你可以把sighandler_t想象成為你最熟悉的int或char型別,對於int signal(int signo, int handler);你會很輕鬆的理解,對於sighandler_t signal(int signo, sighandler_t handler);你只需要瞭解sighandler_t的型別(即typedef void (*sighandler_t)(int);),就可以理解signal函式的完整原型宣告。

本文出自 「小麥」 部落格

4樓:國迎彤澄春

選a,陣列str中只有'\n'這個字元。

b是給2維陣列賦值的。

c,d表示法都是錯的。

c語言中char * a=(char *)_a什麼意思?

5樓:刁煊胥歆然

定義一個儲存char型變數地址的指標q,並把變數a的地址儲存到q指標中

此時q中儲存的是&a(即a在記憶體中地址)

如果在程式中出現(並不是最開始的定義指標時)的*q則表示q指標中儲存的地址所指向的變數,

在你定義的這個中*q就等於a

6樓:宓靖善密

在c語言中,char*

q=a;定義一個指向字元型別的指標q,並將它初始化為a。

這裡a一般應該是一個地址,通過*q我們就可以訪問a處記憶體的值。

示例程式如下:

#include

int main(int argc, char* argv)編譯後的執行結果如下圖所示:

7樓:李瓊範

這裡是要注意一個引數的問題,引數分為:形參與實參形參就是形式引數,也就是函式定義中的引數

實參就是實際引數,也就是函式呼叫中的引數

如int a(int a, char * b){}上面的函式定義中,函式定義括號中的引數a與b就是形式引數,也就是形參而當你在呼叫這個函式時,這個引數就是實際引數如:

int d = 32;

char * s = "hello josin";

//注意下面的函式呼叫:

a(d, s);

此時函式a的引數中d與s就是實際引數。也就是實際傳遞給函式的引數。

8樓:匿名使用者

_a是形參,因為前面有const修飾所以在子函式中,_a是不能被修改的,

所以要處理_a中的資料就要將_a的值賦給子函式裡的變數,使用這個變數來對_a中的資料進行運算,其他指標之類不用再講了吧,這裡面有個指標做形參和普通變數做形參的區別,你要了解這個區別,這個就很容易懂了。

9樓:天雲一號

char *a = (char *)_a;  // 表示將變數_a進行強制型別轉換為char *型別

比如:char _a;

char *a = (char *)_a;  // 就是將char型別的變數_a轉換為char *型別,並賦值給*a

10樓:檢言尉遲月明

從這個式子可以判斷a

也為指向字元型的指標,所以式子的意思是

定義一個指向字元型的指標q,並把它初始化為a,即此時q,a指向相同的字元變數

11樓:認不倒你

const void* _a // _a是一個const void *型別的變數

c語言中、char (*pa)[5];和char *pa[5]有什麼區別

12樓:匿名使用者

指標陣列:int *pa[5]; //它是五個指標。這五個指標組成一個陣列

陣列指標:int (*pa)[5]; // pa是一個指標變數。它指向一個有四個陣列 void main()

b[strlen(a)]='\0';printf("%s\n",b);}

13樓:匿名使用者

pa=&a;實際上是將指標a的地址賦給了pa,或者說是將指標的指標賦給了pa

14樓:匿名使用者

char (*pa)[5];不是定義指標陣列,是用來定義指向一組陣列的指標變數char *pa[5]才是定義指標陣列

c語言中函式形參是char (*a)[10],這是什麼意思??求教各位,謝謝! 5

15樓:匿名使用者

char(*a)[10] 說明該引數是一個陣列指標,該指標指向一個包含10個元素的陣列.

判斷方法: 注意優先順序, 的優先順序高於*,而()可用來強行優先.

char(*a)[10] 首先由*a知道這是一個指標,再有知道該指標指向的是陣列.

如果是char *a[10]

則首先由 知道這是一個陣列,再有char *知道這個陣列的內容是指標.

16樓:匿名使用者

char s[5][10];

char (*a)[10]=s; //這個表示a是指向一行有10個字元的行指標。a的型別與s一致,因此這兒可以賦值。

17樓:匿名使用者

那個是行指標。。。

舉個例子。。。

char str[3][10];

char (*a)[10];

str=a;

a指向str[0]的頭元素。。即str[0][0],a+1指向str[1]的頭元素。。。即str[1][0],以此類推。。。

話說指標的概念挺難的。。要好好琢磨。。。

18樓:

首先離a最近的的是×,所以a是一個指標

a指向的資料型別是char p[10]

a是一個指向有十個元素的char陣列的指標

19樓:asdf聽濤

char表示行指標所指一維陣列的資料型別,*表示其後變數是指標型別;10表示行指標所指一維陣列長度是10;

若有定義:char *a,b[5]; a=(char*)malloc(80);則正確的是(c)

20樓:深深深子

a 是不對的,因為*a是指標a指向的值,scanf需要第二個引數是某地址。

b 也不對,b是一個char型陣列,所以b是這個陣列的首地址(char [5]型的),作為一個陣列,它的首地址是不能改變的,所以這樣是不對的。d也是因為這樣。

c 是對的,"good"作為一個字串,他在記憶體裡是有5個記憶體單元儲存的,地址的第一個記憶體單元的地址,因此你可以認為一個字串代表一個地址,這裡是把"good"的地付給a,而a和b的區別在於,a是一個指標,剛好可以儲存字串的地址,所以c對。

另外,這樣記憶體會洩露,因為malloc沒有被free。

21樓:匿名使用者

mallco開闢80個位元組,字元型別的儲存空間給指標變數a指向,a="good";說明a存字串的地址。

22樓:羅門大佬

根據2樓分析外,d也不對,b【5】只能存4個字元

void fun (char *,char *b){a=b; (*a)++}

23樓:

call fun(p1, p2) ->fun(char *a, char *b) // 此時a是c1的地址,b是c2的地址

a = b; // 此時a是c2的地址(*a)++; // 把c2地址的內容加1

上面沒有對c1地址的內容進行任何修改,所以 c1內容沒變,c2內容加1

24樓:匿名使用者

void fun (char *,char *b)這個函式其實是這樣的

void fun (char *a, char *b)並沒有改變指標a指向的內容。所以c1還是a

c語言中char*alpha[5]的含義

25樓:匿名使用者

定義一個長度是5的字元字元指標的陣列。

也就是陣列alpha的每一個元素都是一個字元的指標(char *).

如下:char a[10];

alpha[0] = a; //將陣列a的地址賦值給字元指標alpha[0].

誰能給我解釋一下這是什麼原理,誰能給我解釋一下這是什麼原理

這個原理很簡 抄單,實驗方法也多,我推薦襲一種 首先跑馬bai燈的原理不知道你是否du清楚,主要通過zhi控制輸出訊號的dao 延時,達到逐一電亮燈泡的原理.通俗點講 假設你用4個開關控制4個燈,叫4個人按照順序每過0.5s 點亮一盞燈,這樣燈就跑起來了 我們都用程式控制,這樣時間可以控制的更短.你...

誰能給我提些建議,誰能給我提些建議? 10

鬱郁周 是哦是哦,有點老套 語言挺好的,感覺和哪個作家相似來著.誰能給我提點建議 200 遠離城市喧囂 去看了一下,首先標題就不是很吸引人。其次感覺怎麼說呢,內容比較單 一 可讀性不是很強,比如有很多是歌詞分享堆砌起來的一篇文章,讓人沒有讀的慾望。然後互動性也不強,不會讓人產生互動的衝動。題主加油噢...

誰能給我解釋解釋什麼叫愛

我只要你我只要你,我只要你好好的就夠了 只要你好好的,我做什麼都值得 你難過,我也一樣會難過 你心痛 我也一樣會心痛 你受了委屈 我也一樣會覺得很委屈 你過得不好,我也一樣不會好受 但是 你開心,我會比誰都開心。如果你真的愛她就不會覺得自己像狗一樣活著,愛是不求回報的,囎 人之立世,所冀者何,常躬思...