欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報激活碼778899分享:c++ 指針的進階

柚子快報激活碼778899分享:c++ 指針的進階

http://yzkb.51969.com/

指針的進階

本文旨在探討指針的高階妙用,默認大家已經(jīng)對指針的基本概念已經(jīng)熟練掌握。

一、字符指針

字符指針的賦值

先創(chuàng)建字符串,再賦值給指針創(chuàng)建字符串時,就賦值給指針

代碼示例

直接跟著代碼來分析它們的區(qū)別吧:

int main()

{

/*方式1:先創(chuàng)建字符串,再賦值給指針*/

char arr[] = "abcd"; // 在內(nèi)存中創(chuàng)建了一個字符數(shù)組,并將數(shù)組的初值賦值為a,b,c,d,\0

char* p1 = arr; // 將內(nèi)存中創(chuàng)建的數(shù)組首地址賦值給了p1指針

*p1 = "W"; // 數(shù)組中的第一個元素‘a(chǎn)’,被修改為了‘w’

/*方式2:創(chuàng)建字符串時,就賦值給指針*/

char* p2 = "abcd"; // 在內(nèi)存中創(chuàng)建了一個"abcd"常量字符串,并且把這個字符串的首地址賦值給了p2

*p2 = "W"; // 這句代碼雖然編譯可能不會報錯,但是運行會崩潰,因為常量是不能被修改的

return 0;

}

代碼解析

char* p1 = arr; 代碼解析:

將內(nèi)存中已經(jīng)創(chuàng)建并初始化完成的字符數(shù)組arr的首地址賦值給了p1指針。

char* p2 = "abcd";代碼解析:

先在內(nèi)存中創(chuàng)建一個常量字符串,然后把這個字符串的首地址賦值給了p2指針。

通過*p2 = "W";想給常量字符串賦值時,程序會崩潰(因為常量不能被修改)。所以,如果確實想使用char* p2 = "abcd";的方式給指針賦值,建議在前面加上const修飾符,const char* p2 = "abcd";聲明這個指針指向的是一個常量?!?/p>

進階思考

想想以下代碼段的輸出結(jié)果:

int main()

{

char arr1[] = "abcd";

char arr2[] = "abcd";

char* arr3 = "abcd";

char* arr4 = "abcd";

printf("%d\n", arr1 == arr2); // 輸出結(jié)果為0,arr1和arr2值不相等,因為他們指向的是不認同的內(nèi)存空間

printf("%d\n", arr3 == arr4); // 輸出結(jié)果為1,arr3和arr4值相等,因為他們指向的都是內(nèi)存中的同一個字符串常量

return 0;

}

別忘了,在arr3和arr4的前面要加上const修飾符,養(yǎng)成良好編程規(guī)范。

二、指針數(shù)組

語法:類型名* 數(shù)組名[數(shù)組長度]

定義:指針數(shù)組是一種特殊的數(shù)組,其中每個元素都是指針。這意味著指針數(shù)組中的每個元素都指向另一個內(nèi)存位置或?qū)ο蟆?/p>

代碼示例:例如如下代碼段,可以使用指針數(shù)組作為函數(shù)參數(shù),對一組字符串進行排序?。

void sort_strings(char **str, int n) {

// 實現(xiàn)排序算法,如冒泡排序等

}

int main() {

char strs[] = {"lisi", "hahaha", "hehehe", "helloa", "leihoua", "lisi", "nihaoa", "wangwu", "ajax", "bureau"};

char *pstr; // 定義指針數(shù)組

for(int i = 0; i < 10; i++) {

pstr[i] = strs[i]; // 將字符串地址存入指針數(shù)組

}

sort_strings(pstr, 10); // 對字符串進行排序

// 輸出排序后的字符串

for(int i = 0; i < 10; i++) {

printf("%s\n", pstr[i]);

}

return 0;

}

三、數(shù)組指針

數(shù)組指針是一個指向數(shù)組類型的指針

數(shù)組指針操作一維數(shù)組

先來看看以下代碼:

int main()

{

int arr[3] = {1,2,3};

int (*p1)[3] = &arr;

int* p2 = arr;

/*使用數(shù)組指針,遍歷一維數(shù)組,方式1:先解引用,再用下標取值*/

for(int i = 0; i < 3; i++)

{

printf("%d\n", (*p1)[i]);

}

/*使用數(shù)組指針,遍歷一維數(shù)組,方式2:先解引用,再移動指針步長,再解引用*/

for(int i = 0; i < 3; i++)

{

printf("%d\n", *(*p1+i));

}

/*使用整型指針遍歷一維數(shù)組:直接移動指針,再解引用即可*/

for(int i = 0; i < 3; i++)

{

printf("%d\n", *(p2+i)); //*(p2+i)等價于p2[i]

}

}

有沒有覺得使用int (*p1)[3]遍歷一維數(shù)組生澀難用。實際上,遍歷一維數(shù)組時,我們更多的是直接使用普通指針(int* p2的方式)。數(shù)組指針在訪問二維數(shù)組時,才會體現(xiàn)它的妙用。

數(shù)組指針操作二維數(shù)組

先明確一點,數(shù)組指針指向的是數(shù)組首元素的地址。那么一個二維數(shù)組arr[i][j]的首元素是誰?是arr[0][0]嗎?

當然不是,arr[0]才是這個二維數(shù)組的首元素,arr[0][0]是這個二維數(shù)組中的第個元素arr[0]中的第一個元素。來看看以下代碼:

int main()

{

int arr[2][3] = {{1,2,3},{4,5,6}};

int (*p1)[3] = arr;

/* 以下幾種操作二維數(shù)組的方式都是等價的 */

printf("%d\n", arr[1][2]);

printf("%d\n", *(*(p1+1) +2));

printf("%d\n", *(p1[1]+2));

printf("%d\n", p1[1][2]);

}

arr[1][2]:直接使用數(shù)組名訪問數(shù)組 *(*(p1+1) +2):arr這個二維數(shù)組中存儲了2個數(shù)組類型的元素

p1+1使指針從數(shù)組首地址偏移了一個元素的長度,也就是指向了"{4,5,6}"這個數(shù)組的首地址。 *(p1+1)在上一步的基礎上對指針進行解引用,拿到了"{4,5,6}"這個數(shù)組首地址的值。(是數(shù)組首地址的值,不是數(shù)組首地址里面的值) *(p1+1) +2在上一步的基礎上,指針偏移了一個元素的長度,也就是指向了"{4,5,6}"這個數(shù)組中的元素’6’的地址。 *(*(p1+1) +2)在上一步的基礎上,對指針進行解引用,拿到了真正的數(shù)據(jù),也就是6這個數(shù)。 *(p1[1]+2):在上一節(jié)數(shù)組指針操作一維數(shù)組中,我們提到了*(p1+1)與p1[1]是等價的。所以*(p1[1]+2)和*(*(p1+1) +2)也是等價的。 p1[1][2]:參考第三點的邏輯,*(p1[1]+2)與p1[1][2]也是等價的。

一維數(shù)組傳參

一維數(shù)組在函數(shù)間傳遞的幾種方式:

void test1(int arr[3]){}; // 正確寫法

void test2(int arr[){}; // 正確寫法,一維度數(shù)傳參時,形參可以省略元素個數(shù)

void test3(int* p){}; // 正確寫法,使用數(shù)組指針傳遞一維數(shù)組

void test4(int* p[3]){}; // 正確寫法,使用數(shù)組指針傳遞一維的指針數(shù)組

void test5(int **p){}; // 正確寫法,使用二級指針,傳遞一維的指針數(shù)組

int main()

{

int arr[3] = {1,2,3;

int arr2[3] = {0};

test1(arr);

test2(arr);

test3(arr);

test4(arr2);

test5(arr2);

test4(arr); // 語法正確,但是不推薦使用數(shù)組指針接收除指針數(shù)組外的其他類型一維數(shù)組

test5(arr); // 語法錯誤,編譯會報錯,二級指針不能接收除指針數(shù)組外的其他類型一維數(shù)組

}

思考:

為什么形參使用int arr[m]的方式接收數(shù)組時,m可以省略?

為什么形參使用int (*p)[n]的方式接收數(shù)組時,n能省略?

答:當對指向一維數(shù)組的指針進行步數(shù)長+1時,不需要知道元素個數(shù),只要知道元素類型即可。

二維數(shù)組傳參

二維數(shù)組在函數(shù)間傳遞的幾種方式:

void test1(int arr[2][3]){};// 正確寫法,行列都確定個數(shù)

void test2(int arr[][3]){}; // 正確寫法,列確認元素個數(shù),行省略元素個數(shù)

void test2(int arr[][3]){}; // 錯誤寫法,列省略元素個數(shù),行確認元素個數(shù)

void test3(int arr[][]){}; // 錯誤寫法,行列都省元素個數(shù)

void test4(int *p){}; // 錯誤寫法,使用基本類型的指針接收二維數(shù)組后,對數(shù)組進行操作時會發(fā)生不可預知的錯誤

void test5(int **p){}; // 錯誤寫法,使用二級指針接收二維數(shù)組后,對數(shù)組進行操作時會發(fā)生不可預知的錯誤

void test6(int (*p)[3]){}; // 正確寫法,使用數(shù)組指針傳遞二維數(shù)組

void test7(int *p){}; // 錯誤寫法,使用數(shù)組指針傳遞二維數(shù)組時,需要確定數(shù)組首元素中的元素個數(shù)

int main()

{

int arr[2][3] = {{1,2,3},{4,5,6}};

test1(arr);

test2(arr);

test3(arr);

test4(arr);

test5(arr);

test6(arr);

test7(arr);

}

總結(jié):

二維數(shù)組傳參時,如果形參使用int arr[m][n]的方式接收實參,形參的行個數(shù)可以省略,列個數(shù)不能省略。二維數(shù)組傳參時,如果形參使用指針的方式接收實參,必須使用數(shù)組指針int (*p)[n]的方式,且n不能省略。

思考:

為什么形參使用int arr[m][n]的方式接收數(shù)組時,m可以省略,n不能省略?

為什么形參使用int (*p)[n]的方式接收數(shù)組時,n不能省略?

答:當對指向二維數(shù)組的指針進行步數(shù)長+1時,需要根據(jù)列的個數(shù)n來決定指針跨域多少個地址長度。

指針數(shù)組傳參

void test4(int** p){}; // 正確寫法,傳遞指針數(shù)組時,需要用到二級指針。

int main()

{

int* arr[10];

test1(arr);

}

五、函數(shù)指針

函數(shù)指針的創(chuàng)建

函數(shù)指針是一個指向函數(shù)的指針

函數(shù)指針創(chuàng)建語法:函數(shù)返回值類型 (*變量名)(函數(shù)參數(shù)類型) = 函數(shù)名

函數(shù)指針創(chuàng)建語法說明:

函數(shù)返回值類型:說明函數(shù)指針指向函數(shù)的返回值類型(*變量名):加()是為了讓*與變量名相結(jié)合,說明這是一個指針類型的變量(函數(shù)參數(shù)類型):根據(jù)函數(shù)指針指向函數(shù)的參數(shù)列表進行填寫,不同的函數(shù)有不同的參數(shù),這里可以省略函數(shù)形參列表中的函數(shù)名,保留形參類型即可。

int Add(int a ,int b)

{

return a+b;

}

int main()

{

int a = 1;

int b = 2;

int (*p)(int,int) = Add;

printf("%p\n",(*p)(a,b));

printf("%p\n", Add); // 打印結(jié)果為函數(shù)Add的起始地址

printf("%p\n", &Add); // 在對函數(shù)名取地址時,Add與&Add是等價的,打印結(jié)果都是函數(shù)Add的起始地址

printf("%p\n", p); // 打印結(jié)果為函數(shù)Add的起始地址,因為指針P中存的是函數(shù)起始地址

}

思考:

void (*p)();與void *p();的區(qū)別是什么?

首先明確一點,按照運算符的優(yōu)先級,()>*>數(shù)據(jù)類型。

在void (*p)();中,(*p)會先結(jié)合,表明這是一個指針。然后(*p)()相結(jié)合,表明這個指針指向的是一個無參的函數(shù),最后void (*p)()再結(jié)合,表明這個指針指向的無參函數(shù)的返回值是void類型。

在void *p();中,p()會先結(jié)合,表明這是一個無參函數(shù)。然后*p()再結(jié)合,表明這個無參函數(shù)的返回值是一個指針。最后void *p()再結(jié)合,表明這個無參函數(shù)的返回值是一個int類型的指針。

函數(shù)指針的使用

函數(shù)指針的調(diào)用推薦語法:(*指針名)(實參列表);

函數(shù)指針的調(diào)用推薦語法說明:

(*指針名):表示對函數(shù)指針解引用,拿到指針指向的值,也就是函數(shù)起始地址。(實參列表):表示調(diào)用函數(shù)時,需要傳遞的參數(shù)值。

思考:

為什么這里叫函數(shù)指針的調(diào)用推薦語法,來看看以下代碼段。實際上,指針P前面加不加*號,加幾個*號都不影響函數(shù)指針的調(diào)用的。個人覺得(*p)(a,b)的方式更容易理解。業(yè)界也有很多人用 p(a,b)的方式,要記得這也是正確語法。

int Add(int a ,int b)

{

return a+b;

}

int main()

{

int a = 1;

int b = 2;

int (*p)(int,int) = Add;

printf("%p\n", p(a,b)); // 正確語法, 輸出結(jié)果為3

printf("%p\n",(*p)(a,b)); // 正確語法, 輸出結(jié)果為3

printf("%p\n",(**p)(a,b)); // 正確語法, 輸出結(jié)果為3

printf("%p\n",(***p)(a,b)); // 正確語法, 輸出結(jié)果為3

}

函數(shù)指針經(jīng)典案例

學會函數(shù)指針的創(chuàng)建與使用足以滿足大部分使用場景,下面列舉兩種函數(shù)指針的進階組合,加強對函數(shù)指針的掌握。

請解讀(*(void (*)())0)();

按照從左到右的順序,找到最先被執(zhí)行的()為(*),表明這是一個指針;按照運算符的優(yōu)先級,(*)()會先結(jié)合,表明這是一個函數(shù)指針;按照運算符的優(yōu)先級,void (*)()會結(jié)合,表明這是一個指向返回值是void類型函數(shù)的函數(shù)指針;按照運算符的優(yōu)先級,(void (*)()) 0會結(jié)合。還記得C語言怎么類型轉(zhuǎn)換嗎(轉(zhuǎn)換類型)待轉(zhuǎn)換的數(shù)據(jù);,例如float y = (float) 10;。這里也是一樣的,指的是將0轉(zhuǎn)換稱為了void (*)()類型。也就是說這個函數(shù)指針指向了地址為0的函數(shù)。按照運算符的優(yōu)先級,* (void (*)()) 0會結(jié)合,對函數(shù)指針*解引用,拿到了里面的值,也就是函數(shù)的起始地址0。按照運算符的優(yōu)先級,(*(void (*)()) 0)()會結(jié)合。上一節(jié)中我們提到了調(diào)用函數(shù)指針指的語法為(*指針名)(實參列表)。上一步中,我們已經(jīng)拿到了函數(shù)的起始地址,最后一步,實際上是調(diào)用了起始地址0的函數(shù),最后面的()是它的參數(shù)列表,因為是一個空參函數(shù),所以調(diào)用時不需要傳遞參數(shù)。 請解讀void (*signal(int, void(*)(int)))(int);

經(jīng)過上1道題的進階,這道題應該很快能看出來void(*)(int)會最先組合,表示這是一個參數(shù)列表為int類型,返回值為void類型的函數(shù)指針。 其次signal(int, void(*)(int))會結(jié)合,這里我們能看出來,signal函數(shù)有2個參數(shù)類型,分別為int和void(*)(int)。通過這一點,我們能分析出當前正在定義一個名為signal的函數(shù)。為什么是正在定義而不是調(diào)用?想一想,如果是調(diào)用的話,參數(shù)列表里填的應該是實際的參數(shù),而不是參數(shù)類型。 經(jīng)過上一步分析,我們知道了當前正在定義signal(類型1,類型2)函數(shù)。函數(shù)定義就要有函數(shù)返回類型,它的返回類型是什么?這里我們發(fā)(*signal(int, void(*)(int))并不能很好的結(jié)合在一起,它不能被解讀為“返回值是一個沒有類型的指針”。 現(xiàn)在我們的思路返回步驟2,我們已經(jīng)確定了signal(int, void(*)(int))這部分內(nèi)容是正在定義一個名為signal的函數(shù)。實際上,除了signal(int, void(*)(int)),這段代碼剩余的部分,也就是void (* )(int)就是這個函數(shù)的返回值類型,沒錯,signal函數(shù)的返回值類型是一個指向“參數(shù)列表為int,返回值為void類型函數(shù)"的函數(shù)指針類型。這里非常容易繞暈,但是定義一個函數(shù)的返回值類型是一個函數(shù)指針時就是這么混亂。感興趣的兄弟可以百度一下如何定義一個函數(shù)的返回值類型是一個函數(shù)指針。 // 下面列舉了聲明一個函數(shù)返回值為函數(shù)指針的2種類方式,一般編碼更推薦宏定義的方式。

// 方式1: 直接定義函數(shù),同時聲明返回值是一個而函數(shù)指針

void (*signal(int, void(*)(int)))(int);

// 方式2: 先宏定義一個函數(shù)指針類型,再定義函數(shù)

typedef void void(* pfun_t )(int);

pfun_t signal(int, pfun_t);

六、函數(shù)指針數(shù)組

初識函數(shù)指針數(shù)組

解釋:函數(shù)指針數(shù)組,指的首先是一個數(shù)組,數(shù)組中的元素都是函數(shù)指針類型

語法:函數(shù)返回值類型 (*數(shù)組名[數(shù)組長度])(函數(shù)參數(shù)類型)

案例:int (*pa[4])(int, int),定義了一個長度為4的數(shù)組,數(shù)組中的元素為int (*)(int, int)類型\

代碼:

int Add(int x,int y){return x+y};

int Sub(int x,int y){return x-y};

int Mul(int x,int y){return x*y};

int Sub(int x,int Mulreturn x-y};

int main()

{

// 定義函數(shù)指針數(shù)組

int (*parr[4])(int, int) = {Add, Sub, Mul, Div};

// 遍歷函數(shù)指針數(shù)組,調(diào)用里面指向的各函數(shù)

for(int i = 0; i<4; i++)

{

printf("%d\n",parr[i](2,3));

}

}

如何使用函數(shù)指針數(shù)組

函數(shù)指針數(shù)組是一種特殊的數(shù)據(jù)結(jié)構(gòu),它允許我們將函數(shù)的地址存儲在數(shù)組中,從而實現(xiàn)通過索引直接調(diào)用不同的函數(shù),這種機制被稱為轉(zhuǎn)移表。

轉(zhuǎn)移表的實現(xiàn)可以通過選擇或循環(huán)語句子和函數(shù)指針數(shù)組結(jié)合使用。例如,我們可以根據(jù)用戶輸入的不同選項,通過選擇語句選擇調(diào)用函數(shù)指針數(shù)組中對應的函數(shù)。這種方式在實現(xiàn)計算器程序等應用中特別有用,其中不同的運算(如加、減、乘、除)可以通過函數(shù)指針數(shù)組來實現(xiàn),用戶界面則通過簡單的輸入選擇來決定調(diào)用哪個函數(shù)進行計算。例如以下代碼段,就使用do/while循環(huán)+if條件判斷+函數(shù)指針數(shù)組實現(xiàn)了一個簡單的計算器功能:

int Add(int x,int y){return x+y};

int Sub(int x,int y){return x-y};

int Mul(int x,int y){return x*y};

int Sub(int x,int Mulreturn x-y};

void Manue()

{

printf("*******計算器*******\n");

printf("**1. 加法 2. 減法**\n");

printf("**3. 乘法 4. 除法**\n");

printf("**0. 退出計算器 **\n");

};

int main()

{

int (*parr[5])(int, int) = {0, Add, Sub, Mul, Div}; // 定義函數(shù)指針數(shù)組,提前封裝好加減乘除需要用到的不同函數(shù)

int input = 0;

int x = 0;

int y = 0;

do()

{

Manue();

printf("請輸入您想要進行的運算:");

scanf("%d", &input);

if(0)

{

printf("程序退出.\n");

}else if(1 < input && 4 > input)

{

printf("請輸入兩個操作數(shù),以逗號隔開:");

scanf("%d,%d", &x, &y);

int ret = (*parr)[i](x,y);

printf("運算結(jié)果為:%d", ret);

}

else

{

printf("參數(shù)錯誤,請重新輸入.\n");

}

}while(input); // 函數(shù)指針數(shù)組的首元素是0,當用用戶輸入0時,會跳出循環(huán),函數(shù)結(jié)束。

}

七、指向函數(shù)指針數(shù)組的指針

定義:指向函數(shù)指針數(shù)組的指針,指的首先是一個指針,這指針指向的是一個數(shù)組,且數(shù)組中的元素都是函數(shù)指針類型。

語法:函數(shù)返回值類型 (*(*數(shù)組名)[數(shù)組長度])(函數(shù)參數(shù)類型)

代碼示例:

int Add(int a, int b)

{

reture a+b;

}

int main()

{

int (*p1)(int, int) = Add; // 將函數(shù)Add傳遞給函數(shù)指針p1

int (*p2[1])(int, int) = {p1}; // 將函數(shù)指針p1,傳遞給函數(shù)指針數(shù)組p2作為首元素

int (*(*p3)[1])(int, int) = &p2; // 將函數(shù)指針數(shù)組p2的首地址,傳遞給指向函數(shù)指針數(shù)組的指針p3

}

八、回調(diào)函數(shù)

定義:回調(diào)函數(shù)就是通過一個函數(shù)指針調(diào)用的函數(shù)。如果把函數(shù)的地址作為參數(shù)傳遞給另一個函數(shù),當這個指針被用來調(diào)用其所指向的函數(shù)時,我們就說這是回調(diào)函數(shù)。回調(diào)函數(shù)不是由該函數(shù)的實現(xiàn)方直接調(diào)用,而是在特定的事件或條件發(fā)生時,由另一方調(diào)用的,用于對該事件或條件進行相應。

代碼:

例如以下代碼段,為調(diào)用C語言庫函數(shù)qsort對不同類型數(shù)組排序的案例,marin方法只負責將資源調(diào)度給qsort函數(shù)進行處理,并不關心它們之間的業(yè)務關系,只關注最終的處理結(jié)果:

#include

#include

struct Student

{

char name[20];

int age;

};

// arr_int數(shù)組比較大小的函數(shù)

int cmp_int(const void *e1,const void *e2)

{

return (int)(*(int*)e1 -*(int*)e2);

}

// arr_db數(shù)組比較大小的函數(shù)

int cmp_double(const void *e1,const void *e2)

{

return (int)(*(double*)e1 -*(double*)e2);

}

// arr_std數(shù)組比較大小的函數(shù)

int cmp_student(const void *e1,const void *e2)

{

return (int)((*(struct Student*)e1).age -(*(struct Student*)e2).age);

}

int main()

{

int arr_int[] = {9,8,7,6,5,4,3,2,1};

double arr_db[] = {9.9,8.8,7.7,6.6,5.5,4.4,3.3,2.2,1.1};

struct Student arr_std[] = {{"zhangsan",10},{"lisi",20},{"wangwu",8}};

/*

qsort是C語言庫中提供的快速排序方法,可以實現(xiàn)對任意類型的數(shù)據(jù)排序

參數(shù)1:void *類型,要求傳入待排序的數(shù)組

參數(shù)2:size_t類型,要求傳入待排序數(shù)組的元素個數(shù)

參數(shù)3:size_t類型,要求傳入待排序數(shù)組單個元素的所占空間大小

慘數(shù)4:int(*)(const void*, const void*)類型,要求傳遞入待排序數(shù)組元素比較大小的函數(shù)

*/

qsort(arr_int, sizeof (arr_int)/sizeof (arr_int[0]), sizeof(arr_int[0]), cmp_int);

qsort(arr_db, sizeof (arr_db)/sizeof (arr_db[0]), sizeof(arr_db[0]), cmp_double);

qsort(arr_std, sizeof (arr_std)/sizeof (arr_std[0]), sizeof(arr_std[0]), cmp_student);

/*

經(jīng)過以上排序arr_int、arr_db,arr_std數(shù)組都被排成了升序,感興趣的同學可以打印結(jié)果看一看。

這里要強調(diào)的主要是cmp_int()、cmp_double()、cmp_student()函數(shù)在這個案例中都屬于回調(diào)函數(shù)

它們都是在qsort()內(nèi)部通過函數(shù)z

*/

return 0;

}

九、void類型指針

學過指針基礎的同學,應該對void類型的指針已經(jīng)很熟悉了,這里我們簡單的明確下void類型的指針都有哪些使用上的限制即可。

void* 類型的指針,可以接收任意類型的地址void* 類型的指針,不能進行解引用操作void* 類型的指針,不能進行指針移動

柚子快報激活碼778899分享:c++ 指針的進階

http://yzkb.51969.com/

參考閱讀

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://m.gantiao.com.cn/post/19519613.html

發(fā)布評論

您暫未設置收款碼

請在主題配置——文章設置里上傳

掃描二維碼手機訪問

文章目錄