日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言指针的错误使用,C语言指针常见错误用法

發(fā)布時間:2024/1/1 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言指针的错误使用,C语言指针常见错误用法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

C語言指針常見錯誤用法

1、使用未初始化的指針

int *p;

*p = 5;

解釋:p是一個指向未知地址的指針,給p賦值,相當(dāng)于給一個未知地址的內(nèi)存賦值,非常危險。

2、錯用指針

int changeP(int *p) {

int b = 5;

p = &b;

}

int a = 3;

int *p = &a;

changeP(p);

解釋:changeP的參數(shù)p是一個臨時變量,所以把這個臨時變量指向&b(b的地址),不能改變p =

&a的結(jié)果。

3、錯用指針

void GetMemory(char *p, int n)

{

p = (char *)malloc(sizeof(char) *

num);

}

char *str = NULL;

GetMemory(str, 100);

這里,

GetMemory的第一個參數(shù),實際傳入的是NULL,顯然不是想要的結(jié)果。應(yīng)該用二級指針,參數(shù)用&str

4、錯用二級指針

void initStack(Stack **A);

Stack **A;

initStack(A);

解釋:A直接作二級指針傳入,作為參數(shù),就被一個臨時變量替代,所以在函數(shù)里面,是沒有辦法對A分配內(nèi)存的。應(yīng)該定義Stack

*A,然后用&A做參數(shù)

5、錯用二級指針初始化

int **array = (int **)malloc(sizeof(int) * ROWS *

COLS);

解釋:這里,array是一個數(shù)組,數(shù)組的元素是int*。所以在malloc的時候,應(yīng)該是sizeof(int*)

6、數(shù)組指針的用法

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

int *ptr=(int *)(&a+1);

問:*(ptr-1)的值是多少?

解釋:&a是一個數(shù)組指針,指針類型是int[5],所以+1就相當(dāng)于加了sizeof

(int[5])個byte,所以ptr指向了5后面的地址,ptr是int類型指針,ptr-1就指向了元素5的位置。

7、指針錯誤被賦值

void findmax(int *p,int *q,int k) {

int i,*m,*n;

*m=*p;

*n=*q;

for (i=0;i小于k;i++) {

if(*p > *m)

{*m=*p;*n=*q;}

p++; q++;

}

解釋:m,n兩個指針應(yīng)該首先指向一個地址,而不是用*m,*n直接賦值,賦值在一個未知的地址上

8、指針地址:靈活形式

int * p = (int *)10000;

解釋:這里10000相當(dāng)于一個內(nèi)存地址,p就是指向10000地址的一個指針;

9、未分配內(nèi)存的指針

char a;

char *str=&a;

strcpy(str,”hello”);

解釋:str未分配內(nèi)存,做字符串拷貝,會導(dǎo)致內(nèi)存越界問題

10、函數(shù)指針

int (*s1)(int);

int (*s2[10])(int);

解釋:s1是一個 指向int func(int)類型函數(shù)的指針;

s2是一個指向int func(int)類型函數(shù)的指針的數(shù)組;

11、從0地址執(zhí)行程序

*((void (*)( ))0) ( );

解釋:

1、void (*)()定義了一個void()類型的函數(shù)指針;

2、把0強(qiáng)制轉(zhuǎn)換為一個指向void()類型函數(shù)的指針;

3、*取指針的內(nèi)容,即調(diào)用這個函數(shù);

免費(fèi)C/C++課程:

https://ke.qq.com/course/181957

QQ:30822533

總結(jié)

以上是生活随笔為你收集整理的c语言指针的错误使用,C语言指针常见错误用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。