1樓:墨汁諾
c。ptr函式返回一個int 型資料 //這個才是正確的,理由是int fun();顯然是一個函式說明,fun換為(*ptr),則ptr就是指向函式的指標了。
int (*ptr)[m] ptr是一個指向m長度的線性記憶體空間,即m大小的一維陣列
int(*ptr)() ptr是一個返回值為int ,引數列表為空的函式指標型別。
例如,int *p,先根據優先順序,等效於*(p),所以p本質上是一個有三個元素的陣列;那麼陣列的每個元素是一個指標;那指標指向是指向一個int型的資料;所以整理一下就是p是一個有三個指向int資料的指標的陣列,本質上就是一個陣列。
2樓:
c. ptr 是指向函式的指標 ;該函式返回一個int 型資料 //這個才是正確的,理由是int fun();顯然是一個函式說明,fun換為(*ptr),則ptr就是指向函式的指標了。
3樓:匿名使用者
選擇c我們先從一步一步的分析,
1,ptr和*最近且在()裡面一次運算優先順序最高,從這裡可以看出ptr是一個指標
2,接著我們出(),把*ptr計做x,則可以看成是int x(),我們很容易看出這是一個函式
而且這個函式沒有引數,有一個int型別的返回值結合上述兩點,我們知道ptr是一個指向函式的指標,它指向的函式無參,有一個int型別的返回值
4樓:匿名使用者
明顯選c啊,這是標準的函式指標的定義方法
5樓:匿名使用者
d. ptr 是一個函式名 ;該函式的返回值是指向int 型資料的指標
分析:排除法
a陣列的表示方法是中括號。,故不正確
b 指向int型資料的指標變數是 int *ptrc ptr是指向函式的指標。那函式呢?函式必有函式名對吧。找不到。故不正確
6樓:
c原理:
每個c變數宣告都具有兩個部分:一個型別和一組具有特定格式的、期望用來對該型別求值的表示式。最簡單的表示式就是一個變數:
float f, g;
說明表示式f和g在求值的時候具有型別float。由於待求值的是表示式,因此可以自由地使用圓括號:
float ((f));
這表示((f))求值為float並且因此,通過推斷,f也是一個float。
同樣的邏輯用在函式和指標型別。例如:
float ff();
表示表示式ff()是一個float,因此ff是一個返回一個float的函式。類似地,
float *pf;
表示*pf是一個float並且因此pf是一個指向一個float的指標。
這些形式的組合宣告對表示式是一樣的。因此,
float *g(), (*h)();
表示*g()和(*h)()都是float表示式。由於()比*繫結得更緊密,*g()和*(g())表示同樣的東西:g是一個返回指float指標的函式,而h是一個指向返回float的函式的指標。
c語言 設有以下說明語句: struct stu { int a; float b; }stutype; 則下面的敘述不正確的是( )
7樓:
答案是c,stutype不是結構體型別名,而是struct stu結構體型別的結構體變數名。
設有如下定義 struct{int n;char c;}a[2],*p=a; 則以下錯誤引用結構
8樓:天雲一號
選a因為a是陣列,*a等價於a[0],而a[0]->n是錯誤的,因為a[0]不是指標,不能用指向運算子,只能用選項b的形式
9樓:紫殤丿枯陌
a*p相當於a 所以 錯了
設有如下定義 int pp 100則printfd ,p的輸出結果是100,對麼?為什麼
隔壁小鍋 int p p 100 則 printf d p 的輸出結果是100是不對的,p宣告為一個int型指標,但是沒有指向具體的記憶體空間。int型別在記憶體中佔用了4個位元組,也就是32位。int型別是有符號的,因此,32位並不會全部用來儲存資料,使用最高位來儲存符號,最高位是0,提示資料是正...
有誰知道,設有如下定義 int a 2,b 3,c 4則值為0的表示式為
選a這裡考察的是表示式中的邏輯運算子 所以要理解 和 的含義。當其左右兩邊的表示式都為真時,整個表示式的值才為真,否則為假 0 當其左右兩邊的表示式都為假時,整個表示式的值才為假,否則為真.而在c語言判斷一個表示式是否為真的標準就是0是假,非0是真。所以a a 1 b 0 就是 2 1 3 0 2取...
1,若有以下定義,char a int b float c double d則表示式a b d c值的型別為
答案 double型別 參考 隱式型別轉換 c 定義了一組內建的型別物件之間的標準轉換,在必要時它們被編譯器隱式的應用到物件上。在算式轉換保證了二元操作符,如加法或乘法的兩個運算元被提升為共同的型別,然後再用它表示結果的型別。兩個通用的指導原則如下 1 為防止精度損失,如果必要的話,型別總是被提升為...