Ⅰ c語言單鏈表的問題,請求高人指點啊!typedef char DataType; --- ListNode *p;LinkList head;
以typedef開頭的是給已有數據類型定義一個別名,可理解為定義一個新的數據類型名。
所以 typedef ListNode *LinkList;是定義一個已有的數據類型( ListNode * )的一個新名:LinkList
並且是一個指針數據類型。ListNode *p;只是定義了一個指針變數,和LinkList head 定義指針變數一樣。
即:ListNode* p;和LinkList p是相同的效果,注意後一個p前無「*」
Ⅱ C語言,線性表黑色的框。datatype是一個數據類型。為什麼他這個定義成指針,不是就為指針分配內
沒有啊, 這個書的意思是
struct SeqList
{
int MAXNUM;
int n;
DataType * element;
}
SeqList結構體內本身不放數據
用的時候再分配,而用int n來記錄元素個數
比如
SeqList seq;
seq.element= (DataType *)malloc( 6 * sizeof(DataType ) );//要分配6個
seq.n= 6;
訪問時,
DataType data= seq.element[ 3 ];//3必須小於n, 這個時候就可以用數組方式訪問
Ⅲ datatype
DataType顧名思義 就是數據類型
數據結構用的不算是C語言 而是類C
那麼要使用C語言正確編譯的話 我們就需要把這些映射成C語言的相應類型
這里DataType就映射成int整形
代碼為typedef DataType int;
就是把DataType和int等價
在後面的
DataType a;
也就是相當於int a;
Ⅳ datatype 在C語言中怎麼使用 後便可以跟什麼數據類型 datetype *elem 什麼意思
已知的數據類型有int,float,double,,等等。這里的datetype單獨來說是沒有含義的。
數據結構定義後。才具有意義。
例:typedef int datetype。這里的datetype就相當於數據類型int。
datetype a;就相當於int a;
你這里的
datetype *elem
就是定義datetype類型的指針變數。至於datetype是什麼類型,就看你的定義了。
例1;
typedef struct datetype
{
int a;
datetype *next;
}
例2 :
typedef int datetype;
typedef float datetype;
typedef char datetype;等等
Ⅳ 有哪位高手能給解釋一下C語言里 datatype * * *;的用法,比如所 char * * *a; 它與指針數組有什麼關系
加入我們如下定義。
char ***p;
char *q[10];
p表示的是一個指針。 q表現的是一個數組。
所謂指針就是存放地址的一種變數,所以其實她可以指向任何類型。
如:p = 0x1234; 這樣是沒有問題的,管他0x1234這塊地址裡面放的是啥,我就可以指向他。雖然*p的時候編譯器認為*p裡面放的還是另外一塊內存的地址,只要你使用的時候注意好就沒有問題。如我們再定義一個int i = 1; p = (char***)&i; ((int)(*p)) = 2; 照樣我們能把i的值變成2。只要你使用的時候注意好就行了。
我們再來看q,我們知道q是數組而且裡面存放的是地址。數組的話就沒有指針這么靈活。q不能指向任何東西,因為他是數組一塊連續的內存,所以是恆定不變的。*q 和 q[0]是一個東西,表示的是數組的第一塊內存裡面的值,長度是4位元組因為裡面存放的是地址嘛。
我們來看p和q的關系,p = (char***)&q; 或者 p = (char***)q[0]; 前者表示p指向數組後者表示p指向的和q[0]指向的是同一個東西:
p+1對於前者就是指向q[1] 對於後者就是我們不可知只知道是q[0]指向的那個字元的後面第四個字元的地址。
寫到這里如果你仔細看看的話應該能明白我說的。指針和數組就基本上明白了,指針是動態的、數組是靜態的。
Ⅵ C語言求DataType的用法和意思
DataType在C語言裡面是不存在的關鍵字,所以這個類型,你不知道是正常的。
看書要仔細,你看下面就寫了
typedef int DataType,這句話的意思就是把DataType與int 指定為同一類型。
也就是說DataType就是int類型,有了typedef這話句,你把DataType當int理解就行了
Ⅶ c語言 typedef
第一,C語言沒有直接用結構體名,所有結構體類型必須在前面加struct,比如
structVarTypes1value;//這才是正確寫法
第二,在一個結構體裡麵包含本身類型,這個不成無限遞歸了?所以這種寫法有誤。
Ⅷ C語言中的datatype是什麼
datatype是數據類型。C的數據類型包括:整型、字元型、實型或浮點型(單精度和雙精度)、枚舉類型、數組類型、結構體類型、共用體類型、指針類型和空類型。
數據類型關鍵字:
1、short:修飾int,短整型數據,可省略被修飾的int。(K&R時期引入)
2、long:修飾int,長整型數據,可省略被修飾的int。(K&R時期引入)
3、long long:修飾int,超長整型數據,可省略被修飾的int。(C99標准新增)
4、signed:修飾整型數據,有符號數據類型。(C89標准新增)
5、unsigned:修飾整型數據,無符號數據類型。(K&R時期引入)
6、restrict:用於限定和約束指針,並表明指針是訪問一個數據對象的唯一且初始的方式。(C99標准新增)
(8)c語言datatype擴展閱讀
轉換:
在算術運算和關系運算中如果參與運算的操作數類型不一樣,則系統會對其進行類型轉換,這是隱含轉換,轉換的原則就是將低類型的數據轉換為高類型數據。
各類型從低到高依次為char,short,int,unsigned int,long,unsigned long,float,double。類型越高范圍越大,精度也越高。隱含轉換是安全的,因為沒有精度損失。
邏輯運算符的操作數必須是bool型,如果不是就需要將其轉換為bool型,非0數據轉換為true,0轉換為false。位運算操作數必須是整數,如果不是也會自動進行類型轉換,也是低類型數據轉換為高類型數據。
賦值運算要求賦值運算符左邊的值和右邊的值類型相同,不同的話也要進行自動轉換,但這個時候不會遵從上面的原則而是一律將右值轉換為左值的類型。
比如,int iVal; float fVal; double dVal;則dVal=iVal*fVal;計算時先將iVal轉換為跟fVal一樣的float型,乘法的結果再轉換為double型。
Ⅸ C語言:typedef struct { DataType *base; DataType *top; int stacksize; }NODE; DataType是什麼類型
DataType應該是寫這段程序的人定義的一個宏。
#define int DataType;
如果是這個的話,那麼DataType就是整型了。
這樣寫的話,只要通過修改int為別的類型,就能夠實現對不同的數據類型進行棧操作了,而不用逐個把所有的int改了。
Ⅹ C 語言怎麼判斷傳入數據的類型
通過約定參數類型或者約定參數格式,確定傳入數據的類型。
1、 大多數情況下,參數類型都是確定的,在函數定義時就可以確定類型。此種情況下,不需要函數本身判斷,編譯器會做判斷或轉換。
如
voidfunc(intn);
聲明這樣的函數,參數為int型,當調用時如果實參不是int型,C編譯器會嘗試轉換為int型,如果轉換失敗,則編譯報錯。
2、 對於參數個數和類型不確定的情況,也就是不定參數形式,一般增加一個格式字元串,通過格式字元串解析後續有幾個參數,每個類型是什麼。
典型例子為printf:
intprintf(constchar*fmt,...);
在printf中,後續參數類型及個數都是不確定的,printf會根據參數fmt中包含的格式字元串,來確定後續的參數類型。 比如傳入fmt為"%s%d%lu",那麼printf就會嘗試在後續參數中讀取三個值,類型分別為char *, int,和unsigned long。
除此外,也可以採用其他方式進行約定。