當前位置:編程學習大全網 - 編程語言 - C語言指針的賦值問題

C語言指針的賦值問題

指針在用要註意初始化,例如:

int *p;

p為指針,地址是未知的,如果直接賦值

*p=a;這樣編譯可以通過,但是會產生警告,p的地址是隨機分配的,這樣對未知的地址賦值很危險,可能會覆蓋掉某些重要數據,所以避免這種危險,在定義指針時註意初始化,也就是賦值。

可以int *p=&a;

或者int *p;

p=&a;

然後再對p進行操作

有錯。

註意大小寫,還有

int a=9;

int *p;

p=&a;//這個是指針指向a

*p=8;

這樣就對了。

擴展資料:

指針的賦值

int *p;

int a;

int b[1];

p = &a;?

p = b;?

指針的賦值,“=”的左操作數能夠是*p,也能夠是p。

當“=”的左操作數是*p時,改變的是p所指向的地址存放的數據;

當“=”的左操作數是p時,改變的是p所指向的地址。

數組的變量名b表示該數組的首地址,因此p=b;也是正確的

同類型的指針賦值:

int val1 = 18,val2 = 19;

int *p1,*p2;

p1 = &val1;

p2 = &val2;

p1 = p2; ? //註意啦,p1指向了val2,而沒有指向val1

備註:字符串與指針的初始化和賦值

初始化:

char *cp = "abcdefg"; //這個初始化過程,是將指針cp指向字符串的首地址,而並非傳遞字符串的值。由於,在C語言裏面,沒有總體處理壹個字符串的機制

賦值:

cp = "abcdefg";

*cp=”abcdefg” ;//錯誤!字符串常量傳遞的是它的首地址,不能夠通過*cp改動該字符串的值,由於該字符串為常量,而它僅僅是簡單的將指針指向該字符串常量。

  • 上一篇:小弟是位剛出道的編程員!哪位高手教教小弟怎麽用ASP編寫壹個可以保存和讀寫的數據庫啊?
  • 下一篇:hcip自學難嗎?
  • copyright 2024編程學習大全網