1. 河豚號 > 生活百科 >

c語言移位運算符怎么用(c語言移位操作技巧)

開始步入正軌,有點那味了

選擇語句

if語句

#define _CRT_SECURE_NO_WARNINGS 1

#include

#include

int main()

{

int input = 0;

printf("你要好好敲代碼嗎?(1/0)n");

scanf("%d", &input);

if (input == 1)

printf("一份好工作n");

else

printf("回家賣紅薯n");

return 0;

}

循環(huán)語句

while語句

#define _CRT_SECURE_NO_WARNINGS 1

#include

#include

int main()

{

int line = 0;

printf("入坑,開始學(xué)習(xí)n");

while (line < 20000)

{

printf("敲一行代碼:%dn",line);

line++;

}

if (line >= 20000)

printf("ding~找到一個好工作d=====( ̄▽ ̄*)bn");

return 0;

}

函數(shù)

定義一個求和函數(shù)

int Add(int x, int y)

{

int z = x + y;

return z;

}

int main()

{

int a = 100;

int b = 200;

int sum = 0;

sum = Add(a, b);

printf("sum=%dn", sum);

return 0;

}

數(shù)組

一組相同類型元素的集合

定義數(shù)組:int arr[10]={0};//定義了一個存放10個整數(shù)數(shù)字的數(shù)組

char ch[20};//字符型數(shù)組

float arr2[5];//浮點型數(shù)組

數(shù)組是通過下標(biāo)訪問元素,例如:int arr[10]={1,2,3,4,5,6,7,8,9,10};通過語句printf(“%dn”,arr[4]);可以打印數(shù)字5;即arr[下標(biāo)]

操作符

此次介紹了移位操作符

左移操作符<<,向左移動二進制位;

移位之后變量本身是不變的,變的是操作后產(chǎn)生的一個值,例如代碼

int main()

{

int a=1;//二進制狀態(tài)下后四位是0001

int b=a<<2;

printf("%dn",b);//b的值為4,二進制狀態(tài)下最后四位的狀態(tài)是0100

printf("%dn",a);//變量a還是1

return 0;

}

單目操作符、雙目操作符、三目操作符

所謂幾目就是指的有幾個操作數(shù)

單目操作符有:!a,-a,,a++;雙目操作符有:a+b;三目操作符有:exp1?exp2:exp3,這個表達式的意思可以解釋為exp1若成立,則整個表達式的值為exp2,若exp1不成立則整個表達式的值為exp3

關(guān)鍵字

typedef

為類型重命名,即給一個類型起名字

typedef unsigned int uint_32;//將unsigned int重命名為unint_32,所以unint_32也是一個類型名

static

1.修飾局部變量–靜態(tài)局部變量:使局部變量的生命周期變長

2.修飾全局變量–靜全局部變量:使全局變量只能在自己所在的源文件內(nèi)使用

3.修飾函數(shù)–靜態(tài)函數(shù):把函數(shù)本來的外部鏈接屬性變成內(nèi)部鏈接屬性

總結(jié):讓作用范圍小的變大,大的變小

指針

指針變量:一種用來存放地址的指針變量,類型為int*(這里的*只是個形式,說明變量是指針變量)

解引用:根據(jù)指針變量存放的地址找到該地址的變量;*變量名,(這里的*是操作符)

int main()

{

int a=10;//定義一個變量,申請4個字節(jié)內(nèi)存

int* p=&a;//取地址,把地址放到p的申請的內(nèi)存里,這里的*說明p就是指針變量

*p=20;//* --解引用操作符,根據(jù)p中的地址找到a,并對a進行操作

printf("a=%dn",a);

return 0;//打印結(jié)果為20

}

執(zhí)行流程可以理解為:房東找了一個房間出租,房間起了個名叫做a雅居,住進來個人叫10君,房東看了看a雅居的門牌號(這個過程就是&a),假設(shè)地址為0x0012ff40記在本子p上,本子的規(guī)格為int*;某一天房東看10君不順眼,想讓20君住進去,房東根據(jù)本子p上的地址(即0x0012ff40)找到了10君(這個過程就是*p),把他趕了出去,讓20君住進去;現(xiàn)在去a雅居找到的人就是20君

流程圖:

 

我的C語言學(xué)習(xí)日記03-c語言的靈魂:指針和結(jié)構(gòu)體

 

??int a=10;解釋:申請一塊內(nèi)存命名為a,這塊內(nèi)存放的值為10,這塊內(nèi)存的地址為0x0012ff40

int*p=&a;解釋:申請一塊內(nèi)存命名p,把a的地址放到這塊內(nèi)存中;這塊內(nèi)存p也有地址,但此時不考慮(&a就是獲取a的地址)

*p=20;解釋:*p(即解引用)根據(jù)p內(nèi)存儲的地址找到a,此時*p就相當(dāng)于a,對*p的操作相當(dāng)于對a進行操作;所以把20賦給*p就是把20賦給a

指針變量的大小

指針存儲的是地址,32位的機器地址是32位,也就是4個字節(jié),所以32位的機器指針大小為4個字節(jié);同理在64位的機器上地址是64位,占8個字節(jié),所以所以64位的機器指針大小為8個字節(jié)

指針變量的大小只與平臺位數(shù)有關(guān),和變量類型無關(guān)

int main() //32位平臺

{

printf("%dn",sizeof(char*));//占4個字節(jié)

printf("%dn",sizeof(short*));//占4個字節(jié)

printf("%dn",sizeof(int*));//占4個字節(jié)

printf("%dn",sizeof(double*));//占4個字節(jié)

return 0;

}

結(jié)構(gòu)體

用來描述復(fù)雜對象,本質(zhì)是一種自定義創(chuàng)造出來的類型

結(jié)構(gòu)體類型內(nèi)有成員,要用.操作符訪問

struct Book //結(jié)構(gòu)體的類型

{

char name[20];//書名

short price;//價格

};//這里的分號不可缺少!!!!!!

int main()

{

//利用結(jié)構(gòu)體類型--創(chuàng)建一個該類型的結(jié)構(gòu)體變量

struct Book b1 = { "C語言程序設(shè)計", 55 };

printf("書名:%sn", b1.name);//此處的.為屬性操作符,用于訪問結(jié)構(gòu)體成員

printf("價格:%d元n", b1.price);

b1.price = 15;//訪問到價格成員,更改數(shù)值

printf("修改后的價格:%d元n", b1.price);

return 0;

}

利用指針pb打印出書名和價格(使用.操作符打印)

struct Book

{

char name[20];

short price;

};

int main()

{

struct Book b1 = { "C語言程序設(shè)計", 55 };

struct Book* pb = &b1;//定義指針變量pb *表明是指針變量

//利用指針pb打印出書名和價格

printf("%sn", (*pb).name);//解引用

printf("%dn", (*pb).price);//

return 0;

}

還可以使用->操作符打印,更加便捷

struct Book

{

char name[20];

short price;

};

int main()

{

struct Book b1 = { "C語言程序設(shè)計", 55 };

struct Book* pb = &b1;//定義結(jié)構(gòu)體指針變量pb *表明是指針變量

printf("%sn", pb->name);

printf("%dn", pb->price);

return 0;

}

.操作符和->操作符的比較:

->操作符的使用結(jié)構(gòu)是:結(jié)構(gòu)體指針->成員 只要定義了結(jié)構(gòu)體指針變量就可以使用,直接從結(jié)構(gòu)體指針變量指向成員;但.操作符的使用結(jié)構(gòu)是:結(jié)構(gòu)體變量.成員 需要結(jié)合解引用,繁瑣

對于結(jié)構(gòu)體變量的更改

前文使用b1.prince=15;語句可以更改價格,因為prince是變量,所以可以直接更改數(shù)值;但是結(jié)構(gòu)體中的書名name是數(shù)組名,本質(zhì)上是地址,不可以直接更改,所以使用b1.name=”C++程序設(shè)計”;語句會報錯不可以更改。

想要更改如下所示:

struct Book//結(jié)構(gòu)體的類型

{

char name[20];//書名

short price;//價格

};

int main()

{

struct Book b1 = { "C語言程序設(shè)計", 55 };

strcpy(b1.name,"C++程序設(shè)計");//全稱strcpy-string copy,是一個字符串拷貝函數(shù)

printf("%sn",bi.name);

return 0;

}

strcpy()函數(shù)全稱是:strcpy-string copy,是一個字符串拷貝函數(shù)

此函數(shù)有兩個參數(shù),strcpy(目的地,”需拷貝的字符”)

本文由網(wǎng)上采集發(fā)布,不代表我們立場,轉(zhuǎn)載聯(lián)系作者并注明出處:http://m.zltfw.cn/shbk/38592.html

聯(lián)系我們

在線咨詢:點擊這里給我發(fā)消息

微信號:15705946153

工作日:9:30-18:30,節(jié)假日休息