開始步入正軌,有點那味了
選擇語句
if語句
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
int main()
{
int input = 0;
printf("你要好好敲代碼嗎?(1/0)n");
scanf("%d", &input);
if (input == 1)
printf("一份好工作n");
else
printf("回家賣紅薯n");
return 0;
}循環語句
while語句
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
int main()
{
int line = 0;
printf("入坑,開始學習n");
while (line < 20000)
{
printf("敲一行代碼:%dn",line);
line++;
}
if (line >= 20000)
printf("ding~找到一個好工作d=====( ̄▽ ̄*)bn");
return 0;
}函數
定義一個求和函數
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;
}數組
一組相同類型元素的集合
- 定義數組:int arr[10]={0};//定義了一個存放10個整數數字的數組
- char ch[20};//字元型數組
- float arr2[5];//浮點型數組
數組是通過下標訪問元素,例如:int arr[10]={1,2,3,4,5,6,7,8,9,10};通過語句printf(“%dn”,arr[4]);可以列印數字5;即arr[下標]
操作符
此次介紹了移位操作符
左移操作符<<,向左移動二進位位;
移位之後變數本身是不變的,變的是操作後產生的一個值,例如代碼
int main()
{
int a=1;//二進位狀態下後四位是0001
int b=a<<2;
printf("%dn",b);//b的值為4,二進位狀態下最後四位的狀態是0100
printf("%dn",a);//變數a還是1
return 0;
}單目操作符、雙目操作符、三目操作符
所謂幾目就是指的有幾個操作數
單目操作符有:!a,-a,,a++;雙目操作符有:a+b;三目操作符有:exp1?exp2:exp3,這個表達式的意思可以解釋為exp1若成立,則整個表達式的值為exp2,若exp1不成立則整個表達式的值為exp3
關鍵字
typedef
為類型重命名,即給一個類型起名字
typedef unsigned int uint_32;//將unsigned int重命名為unint_32,所以unint_32也是一個類型名
static
1.修飾局部變數–靜態局部變數:使局部變數的生命周期變長
2.修飾全局變數–靜全局部變數:使全局變數只能在自己所在的源文件內使用
3.修飾函數–靜態函數:把函數本來的外部鏈接屬性變成內部鏈接屬性
總結:讓作用範圍小的變大,大的變小
指針
指針變數:一種用來存放地址的指針變數,類型為int*(這裡的*只是個形式,說明變數是指針變數)
解引用:根據指針變數存放的地址找到該地址的變數;*變數名,(這裡的*是操作符)
int main()
{
int a=10;//定義一個變數,申請4個位元組內存
int* p=&a;//取地址,把地址放到p的申請的內存里,這裡的*說明p就是指針變數
*p=20;//* --解引用操作符,根據p中的地址找到a,並對a進行操作
printf("a=%dn",a);
return 0;//列印結果為20
}執行流程可以理解為:房東找了一個房間出租,房間起了個名叫做a雅居,住進來個人叫10君,房東看了看a雅居的門牌號(這個過程就是&a),假設地址為0x0012ff40記在本子p上,本子的規格為int*;某一天房東看10君不順眼,想讓20君住進去,房東根據本子p上的地址(即0x0012ff40)找到了10君(這個過程就是*p),把他趕了出去,讓20君住進去;現在去a雅居找到的人就是20君
流程圖:

int a=10;解釋:申請一塊內存命名為a,這塊內存放的值為10,這塊內存的地址為0x0012ff40
int*p=&a;解釋:申請一塊內存命名p,把a的地址放到這塊內存中;這塊內存p也有地址,但此時不考慮(&a就是獲取a的地址)
*p=20;解釋:*p(即解引用)根據p內存儲的地址找到a,此時*p就相當於a,對*p的操作相當於對a進行操作;所以把20賦給*p就是把20賦給a
指針變數的大小
指針存儲的是地址,32位的機器地址是32位,也就是4個位元組,所以32位的機器指針大小為4個位元組;同理在64位的機器上地址是64位,佔8個位元組,所以所以64位的機器指針大小為8個位元組
指針變數的大小隻與平台位數有關,和變數類型無關
int main() //32位平台
{
printf("%dn",sizeof(char*));//佔4個位元組
printf("%dn",sizeof(short*));//佔4個位元組
printf("%dn",sizeof(int*));//佔4個位元組
printf("%dn",sizeof(double*));//佔4個位元組
return 0;
}結構體
用來描述複雜對象,本質是一種自定義創造出來的類型
結構體類型內有成員,要用.操作符訪問
struct Book //結構體的類型
{
char name[20];//書名
short price;//價格
};//這裡的分號不可缺少!!!!!!
int main()
{
//利用結構體類型--創建一個該類型的結構體變數
struct Book b1 = { "C語言程序設計", 55 };
printf("書名:%sn", b1.name);//此處的.為屬性操作符,用於訪問結構體成員
printf("價格:%d元n", b1.price);
b1.price = 15;//訪問到價格成員,更改數值
printf("修改後的價格:%d元n", b1.price);
return 0;
}利用指針pb列印出書名和價格(使用.操作符列印)
struct Book
{
char name[20];
short price;
};
int main()
{
struct Book b1 = { "C語言程序設計", 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語言程序設計", 55 };
struct Book* pb = &b1;//定義結構體指針變數pb *表明是指針變數
printf("%sn", pb->name);
printf("%dn", pb->price);
return 0;
}.操作符和->操作符的比較:
->操作符的使用結構是:結構體指針->成員 只要定義了結構體指針變數就可以使用,直接從結構體指針變數指向成員;但.操作符的使用結構是:結構體變數.成員 需要結合解引用,繁瑣
對於結構體變數的更改
前文使用b1.prince=15;語句可以更改價格,因為prince是變數,所以可以直接更改數值;但是結構體中的書名name是數組名,本質上是地址,不可以直接更改,所以使用b1.name=”C++程序設計”;語句會報錯不可以更改。
想要更改如下所示:
struct Book//結構體的類型
{
char name[20];//書名
short price;//價格
};
int main()
{
struct Book b1 = { "C語言程序設計", 55 };
strcpy(b1.name,"C++程序設計");//全稱strcpy-string copy,是一個字元串拷貝函數
printf("%sn",bi.name);
return 0;
}strcpy()函數全稱是:strcpy-string copy,是一個字元串拷貝函數
此函數有兩個參數,strcpy(目的地,”需拷貝的字元”)
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/269798.html
微信掃一掃
支付寶掃一掃