-
1.編譯後,執行時。
你可以用乙個陣列來測試它,我的IDE:VC++
測試如下:
int g_itest=sizeof(int);
char ch[g_itest];
編譯時錯誤無法分配常量大小為 0 的陣列,並且編譯器不知道該陣列有多大。
到。 #define g_itest 1024char ch[g_itest];
編譯通過,顯然已經編譯。
2.感覺型別轉換是一種改變記憶表徵的方法。 int a=1, a 在記憶體中 =0x00000001;
float b=(float)a, b 0x3f800000記憶體; 內部機制是演算法,知道 int 和 float 記憶體訪問表示很容易實現演算法。
-
1)我覺得在執行時還可以。
#include
#include
using namespace std;
void f(const int &i)
int arr[i];
cout <<"size of arry:"<>i;
f(i);system("pause");
return 0;
2)資料以二進位形式儲存在記憶體中,每種資料型別都有自己的讀取演算法。
-
sizeof(struct depositor) 結構的大小 malloc 函式接受乙個 int(該結構的大小),為該位元組數分配空間,並返回指向該區域的不可區分的指標(void* 指標)。
由於 void 指標必須轉換為不同的型別才能使用,因此我們將其轉換為目標格式(struct depositor *),然後就可以使用它了。
整體效果,動態分配乙個新的結構存款人,由指標 p1 訪問。
-
就是把應用的記憶體(乙個位址,即乙個指標)做乙個強制轉換,變成指向結構存放器的指標型別,因為malloc返回的是void *型別,所以這樣的強制轉換是需要的。
但實際上,即使你不做這種型別轉換,也沒什麼,編譯器只會給你乙個警告。
-
sizeof(struct depositor) 獲取 depositor 結構的記憶體空間大小,malloc allocation size 是 depositor 的一段記憶體,但它返回 void*,需要強制型別轉換為 depositor*,這就是 (struct depositor*) 的意思。
-
要開啟乙個 struct deposito (sizeof(struct depositor) 型別的空間是計算這個空間的大小。 馬洛克是為了開放而進行的。
-
我沒有學過組裝,只想說各種型別的精度是不一樣的,轉換過程中部門精度的損失導致的結果不同。
-
&php + sizeof(hope);希望*的指標被sizeof(hope)移位,即PHP的位址會被希望的大小移位 * sizeof(hope) = 8 * 8 = 64位,即0x0012ff78 + 64(0x40) = 0x0012ffb8
而 (char*)&php + sizeof(hope) 移動 char 型別的指標,所以 char size * sizeof(hope) = 1 * 8 = 8 位元組,即:0x0012ff78 + 8(0x08) = 0x0012ff80
-
Sizeof 可以,但只能在以下情況下使用:
1 char ch;sizeof(ch) 表示變數區域的長度 結果是 1
2 char *str = "abcdefg"; sizeof(str);變數也是一樣的,但這是指標,所以它是 4
3 sizeof("abcdefg");這裡有些同學會認為指標的長度和2一樣,但實際上,這裡是靜態記憶的確切長度,結果是7。 因為你告訴他這個靜態記憶的長度,他為什麼不知道,不是嗎?
4 char arr[10];sizeof(arr) 在這裡有點像 3,它是陣列 10 的長度。
5 struct aa;sizeof(struct aa) struct aa 型別的長度為 8,但也可以是常用的型別,如 sizeof(char)、sizeof(int) 等。
最後我們知道編譯器預設將引數引數集作為對應的指標,即只要引數是陣列,那麼它就是指標,上面的第二個子句是 4
-
sizeof 是確定兩個字串的位元組長度,字串的長度一般不用這個函式,多使用 strlen(),包括標頭檔案
if(strlen(a)>strlen(b)) 長字串位址。
else if(strlen(a)
-
if(sizeof(a)>sizeof(b)) 分配給 c 的長字串位址
這裡使用 sizeof 只是指標的長度。 應使用 strlen
-
強制轉換有兩種形式,稱為顯式強制轉換和隱式強制轉換。
1.顯式鑄件。
顯式強制轉換需要使用以下格式的強制轉換型別運算子:
type() 或 (type)。
Type 是型別描述符,例如 int 和 float。 是乙個表示式。 強制轉換運算元操作後,返回乙個帶 type 的數值,該強制轉換操作不會改變運算元本身,操作後運算元本身也不會改變,例如:
int nvar=0xab65;
char cchar=char (nvar);
上述強制型別轉換的結果是刪除整數值0xab65頂部的兩個位元組,並將後兩個位元組的內容作為 char 值分配給變數 cchar,型別轉換後 nvar 的值沒有變化。
2.隱式強制型別轉換。
隱式型別轉換發生在具有返回值的賦值表示式和函式呼叫表示式中。 在賦值表示式中,如果賦值左側和右側的運算元型別不同,則賦值右側的運算元將被強制轉換為賦值左側的型別值,然後賦值給賦值左側的變數。 呼叫函式時,如果返回後的表示式型別與函式返回值的型別不同,則返回後的表示式的值在返回值時被強制轉換為函式返回值型別,然後返回值,例如:
int nvar;
double dvar=;
nvar=dvar;這句話執行完後,NVAR 的值是 3,而 DVAR 的值還在。
-
1.在C語言中,轉換是右邊最接近(double)的資料,運算級別低於括號,但高於乘除法、加減法、賦值字元等; 並考慮 k m 的問題:這個鍵取決於二進位運算的最高精度級別,並且在二進位運算的兩個變數之間:較低的精度會自動轉換為較高的精度;
2. 示例:包括
main()
-
你理解得很對。 這兩個問題的答案都是:是的。
一開始,val 被定義為 int,這意味著 val 的位址(即 &val)是乙個整數。 但是,一旦你取出了位址 &val,你就可以通過告訴編譯器位址的指標內容應該被讀取為 char 指標來重新定義位址的內容 (char *)。
這可以被認為是鑄件,但它不是標準的,標準鑄件是:(char) val 或 char(val)
在 32 位 Windows 作業系統中,int 的數量占用 4 個位元組(bytes),最低的位元組(即 8 位)被強制轉換為 char 後自動取,這是自動完成的,所以您不必擔心。 但是,由於指標被定義為指向 char 的指標,因此它僅由乙個位元組(8 位)新增(指標++)。
-
int *a 實際上等於 (int *)a; 我們可以將 a 的資料型別視為 (int *),但 int(*a) 是另一回事
int(*a)只是乙個只能概念化的東西,也就是說a本身就是乙個位址型別,*a取這個位址的值(變數,空格),但是宣告這樣的變數,當然等同於要魚不用說,編譯器肯定不做vc++好像是過去的編譯, 但記憶不能接受)。
p = (struct studedt *)malloc(sizeof(struct student));
malloc() 函式返回乙個普通的位址型別(但這個位址塊的大小已經是 sizeof()),如果你想將 struct student 指標 p 指向它,你必須將其轉換為 struct student 指標 p 可以指向的 struct student 位址,所以它被強制轉換
struct studedt) *malloc(size);malloc() 給出乙個位址,它本身就是乙個指標,*pointer data,它將是乙個常量(空格),然後這個常量會被強制轉換為 (struct studedt) 就像 int a 一樣; short b = (short)a;當然,編譯和不編譯是另一回事(可以編譯)。
-
分配記憶體空間函式 malloc
呼叫表單:型別說明符 *) malloc(size)。
型別說明符指示區域用於哪種資料型別。
型別說明符 *) 指示返回值被強制轉換為該型別指標。
size“是乙個無符號數字。
例如:pc=(char *)malloc(100);
表示分配了 100 位元組的記憶體空間並強制轉換為字元陣列型別,函式的返回值是指向字元陣列的指標,並且指標分配給指標變數 pc。
-
這不起作用,p 是 struct student* 型別,malloc 返回 void* 型別。
用於型別匹配。
因此,malloc 返回的值也應該轉換為 struct studedt *,然後才能賦值。
因此,將擴充套件放在外面是沒有意義的。
-
struct student *p;
p = (struct studedt *)malloc(size)
p 是指向 sturct student 的指標,但 malloc(size) 返回 (void *) 以匹配 struct student *p,所以只要兩者相同,就可以了......p = (struct studedt *)malloc(size),它指向的區域是 struct student 型別。
-
我已經很久沒有寫C語言了,所以我會盡力幫你回答。
typedef struct 表示一種新的資料型別,如 lnode。
LinkList 是指向資料型別(如 lnode)的指標,此 *linklist 指標指向 lnode 的結構型別。
如果輸出 *linklist,則結果將是指標指向的資料。 輸出鏈結列表是此 *linklist 指標的位址。
p、q 變數用於儲存鏈結列表等資料。
sizeof() 是返回型別的大小,malloc 是應用程式的大小。 (linklist) 是乙個演員表。
第一。 解:因為 a(n+1)=a(n)+1 (n(n+1)),所以 a(n+1)-a(n)=1 (n(n+1)) 所以 a(n)-a(n-1)=1 (n(n-1))a(n-1)-a(n-2)=1 ((n-1)(n-2))a(2)-a(1)=1 (2*1)。 >>>More
別慌,我告訴你,在美國留學的費用大概是每年30萬左右(我哥哥在美國的富蘭克林馬歇爾學院讀書)他是個大學生,我告訴你,如果你學得真好的話。 選擇雅思和托福。 告訴你,如果你成績好,你可以申請全額獎學金。 >>>More