目錄
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、會(huì)同網(wǎng)站維護(hù)、網(wǎng)站推廣。一.指針
二.字符指針
三.指針數(shù)組
四.數(shù)組指針?
1.數(shù)組指針的使用
四.數(shù)組參數(shù)、指針參數(shù)
1.一維數(shù)組傳參
2.二維數(shù)組傳參
3.一級(jí)指針傳參
4.二級(jí)指針傳參
五.函數(shù)指針.
六.函數(shù)指針數(shù)組.
指針是什么呢?
簡單的理解,指針就是一個(gè)變量,用來存放地址。而指針變量的大小在32位機(jī)器上是4字節(jié),在64位機(jī)器上是8字節(jié)。
這里的指針pa就存放了a的地址。
二.字符指針字面上來理解,就是指向字符的指針。
如果要存放字符串的話,就有一些注意事項(xiàng)了。
?char arr[] = "zlsrosy."; //1
? ?char brr[] = "zlsrosy."; //2
? ?const char *crr = "zlsrosy."; //3
? ?const char *drr = "zlsrosy."; //4
1和2:分別開辟了arr1和brr2兩塊空間,并用zlsrosy.初始化。所以str1和str2的地址并不相同。
3和4:首先這里有一個(gè)zlsrosy常量字符串,它已經(jīng)存在了內(nèi)存中了。之后我們用crr,drr指針指向了這個(gè)常量字符串。所以crr和drr的地址是相同的。
三.指針數(shù)組它是存放指針的數(shù)組。
四.數(shù)組指針?int* arr[10];? ? ?首先它是一個(gè)有10個(gè)元素的數(shù)組,每個(gè)元素是int*類型的。
char* arr[10];? ? ?首先它是一個(gè)有10個(gè)元素的數(shù)組,每個(gè)元素是char*類型的。
char**arr[10];? ?首先它是一個(gè)有10個(gè)元素的數(shù)組, 每個(gè)元素是char**類型的。
與指針數(shù)組不同,數(shù)組指針是一種指針,他指向數(shù)組。?
int*?arr[10]? ? ? ? ? ? ? ? ?它是一個(gè)指針數(shù)組
int (*arr)[10]? ? ? ? ?它是一個(gè)數(shù)組指針
看出區(qū)別了嗎?
*如果先和arr結(jié)合,代表它是一個(gè)指針,如果它先和int結(jié)合,代表它是一個(gè)數(shù)組,這就涉及到了優(yōu)先級(jí)的問題。[ ]的優(yōu)先級(jí)>*。?
1.數(shù)組指針的使用傳參數(shù)組名arr,代表首元素地址。這里的首元素是arr【0】是二維數(shù)組的第一行。
所以傳遞的arr是第一行的地址,是一個(gè)一維數(shù)組。?
四.數(shù)組參數(shù)、指針參數(shù) 1.一維數(shù)組傳參#includevoid test(int arr[])// 傳整形數(shù)組,用數(shù)組接收 ok.
{}
void test(int arr[10])// 同上.
{}
void test(int *arr)// 傳整形數(shù)組,arr代表數(shù)組首元素地址,用整形指針arr接收 ok.
{}
void test2(int *arr[20])//傳指針數(shù)組,用指針數(shù)組接收 ok.
{}
void test2(int **arr)// 傳一級(jí)整形指針數(shù)組,數(shù)組名表示首元素地址,用二級(jí)指針接收 ok.
{}
int main()
{
int arr[10] = {0};
int *arr2[20] = {0};
test(arr);
test2(arr2);
}
2.二維數(shù)組傳參void test(int arr[3][5])// 傳二維數(shù)組,接收用二維數(shù)組 ok.
{}
void test(int arr[][])// 傳二維數(shù)組,接收時(shí)沒有指定列 err.
{}
void test(int arr[][5])// 傳二維數(shù)組,指定了列,ok.
{}
void test(int *arr)// 傳二維數(shù)組,數(shù)組名表示首元素地址,int*arr只接收了第一行 err.
{}
void test(int* arr[5])//傳二維(整形)數(shù)組,用指針數(shù)組接收,err.
{}
void test(int (*arr)[5])//傳二維數(shù)組,用數(shù)組指針接收,ok.
{}
void test(int **arr)//傳二維數(shù)組,數(shù)組名表示首元素地址,int**arr是地址的地址,err.
{}
int main()
{
int arr[3][5] = {0};
test(arr);
}
3.一級(jí)指針傳參void test1(int *p)
{}
//test1函數(shù)能接收什么參數(shù)?
void test2(char* p)
{}
//test2函數(shù)能接收什么參數(shù)?
int main()
{
int a=0;
int*pa=&a;
int arr[5]={0};
char b=0;
char*pb=&b;
char brr={0};
test1(&a);
test1(pa);
test1(arr);
test2(&b);
test2(pb);
test2(brr);
}
4.二級(jí)指針傳參
void test3(int**arr)
{};
//可以傳什么參數(shù)?
int main()
{
int **ptr;
int *pp;
int*arr[10]; //指針數(shù)組
test3(ptr);
test3(&p);
test3(arr);
}
五.函數(shù)指針.指向函數(shù)的指針
void swap(int *a,int*b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
int main()
{
int a = 1;
int b = 2;
swap(&a,&b);
void (*arr)() = swap; //函數(shù)指針
}
六.函數(shù)指針數(shù)組.(*arr)代表它是一個(gè)指針,void是函數(shù)swap的返回類型,()代表它是一個(gè)函數(shù)。?
它是一個(gè)數(shù)組,里面的數(shù)據(jù)全是函數(shù)指針,用于集合函數(shù)
int add(int a,int b)
{
return a + b;
}
int sub(int a, int b)
{
return a - b;
}
int main()
{
int a = 1;
int b = 2;
add(a,b);
sub(a, b);
int (*arr[2])(int x,int y) = { add,sub}; //函數(shù)指針數(shù)組
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
分享標(biāo)題:帶你快速了解C語言之指針進(jìn)階-創(chuàng)新互聯(lián)
瀏覽地址:http://jinyejixie.com/article48/ddegep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、電子商務(wù)、網(wǎng)站維護(hù)、標(biāo)簽優(yōu)化、小程序開發(fā)、定制開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容