C語言基礎1

2021-10-18 22:40:01 字數 2099 閱讀 7889

小端環境輸出結果為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...