小端環境輸出結果為value = 0x00004043
typedef struct testdata_ testdata;
int main(void)
c語言結構體中的冒號表示位域
乙個char*型別的指標,恰好指向了乙個int,想讓這個指標跳過int指向下乙個char,下面的**可以達到這個目的的是(b)
a: (int *)p)++;
b: p += sizeof(int);
a: assignmemt to cast is illegal, lvalue casts are not supported
char* p0 = "hello";
char* p1 = p0;
char* p2 = p1;
((int *)p1)++;
p2 += sizeof(int);
以下程式的輸出為:
void func1(int a[5]) // int* const a
typedef int a[5]; // a is int[5]
typedef a* pa; // int (*)[5]
int main(void)
; func1(a);
a a1;
func1(a1);
pa b = &a1;
func1(*b);
printf("size %d\n", sizeof(a));
return 0;
}
a size is 4
a size is 4
a size is 4
size 20
下面**輸出為
// a.h
typedef int devid;
// a.c
#include "a.h"
typedef int devid;
// b.c
#include "a.h"
typedef short devid; // compile error
// c.c
#include "a.h"
void func(void)
a.c和c.c會起作用
int (*p[10])(int*)宣告了p是乙個(c)
a. 指向函式的指標
b. 返回指標的函式
c. 元素為函式指標的陣列
d. 入參為陣列指標的函式
在x64環境下,呼叫如下函式(假設xs的位址是0x10000),輸出是3 5 0x10018
int main(void)
; int *p1 = &xs[1][0];
printf("%p\n", xs);
printf("%p\n", &xs); // 和xs相同
printf("%p\n", xs + 1); // 移動乙個列長 xs+0x08
printf("%p\n", &xs + 1); // 移動整個陣列的大小 xs+0x18
printf("%p\n", *(xs + 1)); // 移動乙個列長 xs+0x08
printf("%d\n", **(xs + 1)); // 2
printf("%u %u %p\n", p1[1], *(*(xs + 2) + 1), &xs+1); // 3 5 xs+0x18
return 0;
}
執行下列語句後的結果為(x=3,y=3)
int x = 3, y;
int *px = &x;
y = *px++;
printf("%d %d", x, y); // 3 3
以下**的輸出為:
typedef struct haha
;int main()
end
C語言基礎1
一.基本資料型別有哪些?整型int 整數,在目前絕大多數機器上佔 4個位元組。tc環境中是 2個位元組 單精度實型 float 單精度浮點數,一般是 4個位元組長 雙精度實型 double 雙精度浮點數,一般是 8個位元組長 字元型char 字元,一般是 1個位元組長 用來表示 256個 ascii...
c語言基礎 1
1.vc6.0 裡 char 1個位元組 short int 預設int 2個 long int 4個 float 4個 double 8 個 2.char a 時有ascii的字元,還有轉義字元,ddd 8進製 xhh 16進製制 3.運算子有優先順序和結合方向 其中單目運算子和賦值運算子的結合方...
C語言基礎總結1
c語言基礎資料型別 int 4位元組 記憶體 short 2位元組 記憶體 char 1位元組 記憶體 float 4位元組 記憶體 定義變數 int a 5 int b 3 int c a b 表示式是由,變數,常量,運算子組成的有結果的式子。如 上面的 c a b c語言中的輸入和輸出 scan...