2. 指標
3. 學習總結
輸入乙個直角三角形的斜邊和其中乙個銳角角度,求另兩個直角邊:
(輸入的角度為數字,需要變成度數,弧度=角度/180*派)
#include
#include
int main()
編譯:gcc ********.c -o ******** -lm
結果為:
6
30a=
2.999920
b=5.196199
輸入三條邊長度,計算三角形周長:
#include
#include
int length
(int a,int b,int c)
int main()
結果為:
345
12
輸入三條邊長度,計算三角形面積:
海**式:s = sqrt(p*(p-a) * (p-b) * (p-c))
公式中a,b,c分別為三角形三邊長,p為半周長,s為三角形的面積
#include
#include
int length
(int a,int b,int c)
int area
(int a,int b,int c)
int main()
結果為:
345
len=
12area=
6.000000
中斷當前函式的執行,並返回乙個值沒有返回值的函式用void
void 函式(引數列表)
是乙個變數,他是存放位址的變數
取位址用&,對應%p
型別* 指標變數;
int* p;
p = &n;
printf("%p\n",p);
p中的存放的就是n的位址
#include
int main()
結果為:
p=
0x7ffff8503c04
&n=0x7ffff8503c04
n=100
把指標對應位址中的值取出來
printf("%d\n",*p);
驗證p解引用的值就是n的值:
#include
int main()
結果為:
p=
0x7fffe8697014
&n=0x7fffe8697014
n=100
*p=100
n=200
*p=200
n=300
*p=300
值傳遞我們先看乙個例子
試圖通過函式來改變n的值:
#include
void
func
(int n)
int main()
結果為:
main1 n[
0x7ffdb563312c]:
100func1 n[
0x7ffdb563310c]:
100func2 n[
0x7ffdb563310c]:
200main2 n[
0x7ffdb563312c]:
100
我們發現:呼叫函式的操作無法改變主函式變數的值
其中func(n);只是把n的值傳給引數
main函式中的n和func中的n只是名字相同,其他都不同
而void func(int n)與外面無關
如果非要有關,可以通過這種方式同步變數:
#include
void
func
(int* p)
int main()
結果為:
main1 n[
0x7ffc2d02703c]:
100func1 n[
0x7ffc2d02703c]:
100func2 n[
0x7ffc2d02703c]:
200main2 n[
0x7ffc2d02703c]:
200
函式無法改變變數的值,但是指標可以
在函式中通過對位址的操作,改變變數的值。
理解輸入函式:scanf("%d",&n);
交換兩個變數編輯為函式(需要用指標的方式)
如果不使用指標:
#include
void
swap
(int x,int y)
int main()
結果為:
a:
10 b:
20x:
10 y:
20x:
20 y:
10a:
10 b:
20
函式中的操作無法改變主函式中變數的值
但,如果使用指標進行操作:
#include
void
swap
(int* x,int* y)
int main()
結果為:
a:
10 b:
20*x:
10*y:
20*x:
20*y:
10a:
20 b:
10
#include
void
func()
int main()
a:
10 b:
20&a:
0x7ffd11ae72dc
&b:0x7ffd11ae72d8
0x7ffd11ae72dc
a:100 b:
20
a:
10 b:
20&a:
0x7ffcefa57fbc
&b:0x7ffcefa57fb8
0x7ffcefa57fb8
a:10 b:
100
輸入引數a和b,同時獲取a與b的商和餘數:
(除數為0則報錯)
#include
int count
(int a,int b,int* div,int* rem)
else
}int main()
else
}
結果為:
25
3商為8 餘數為1
結果或為:
23
0除數不能為0
實現二元一次方程求根,輸入引數a、b、c,返回是否有根,如果有根則返回兩個根
}結果是:
263
x1:0 x2:
-2
小知識:
bool型別: 和int型別不同,bool型別的變數只能是0和1,也就是false和ture
使用前需要加標頭檔案標頭檔案 #include
在c語言函式和指標的學習過程中
要關注函式的型別,型別決定返回值是多少,其次,一旦需要返回值到主函式,應當及時在主函式中定義好新的變數迎接他;
對於指標的運用,是為了改變在主函式中定義變數的值,所以才用指標,有些值只用於傳遞,之後不使用,就不需要用指標。
C語言 指標入門
在我年輕的時候,我三次鼓起勇氣學習c,三次都倒在了指標上 雖然很清楚指標是一種存放位址的變數,但是他具體是乙個什麼意思呢?我把整個空間看成乙個 n 1 維的空間。n 是資料型別,可能是int,char,double,等等。1 是位址。把位址看成一根數軸。舉個粒子 int pa int a 5 pa ...
C語言 指標入門
指標是乙個用來指示乙個記憶體位址的計算機語言的變數或 處理器中的暫存器。簡單來說,指標 位址 指標是一種變數,也有資料型別和相應的位址。1.指標變數的定義 定義普通變數格式為 資料型別 變數名 指標變數定義如下 int p1 定義了乙個整型指標變數p1 char p2 定義了乙個字元型指標變數p2 ...
C語言入門之 指標
存放位址的變數稱為指標變數。指標變數是一種特殊的變數,它不同於一般的變數,一般變數存放的是資料本身,而指標變數存放的是資料的位址。假設在程式中宣告了1個int型的變數a,其值為68。系統為變數a分配的首位址為0x65fdf4h,p a是存放變數a位址的指標變數,即p a中存放的值為0x065fdf4...