c語言指標如何賦值,c語言 指標如何賦值

時間 2021-08-30 09:32:14

1樓:一棵無所不知的小白菜

1、變數的指標就是變數的地址。存放變數地址的變數是指標變數。即在c語言中,允許用一個變數來存放指標,這種變數稱為指標變數。

因此,一個指標變數的值就是某個變數的地址或稱為某變數的指標。

2、為了表示指標變數和它所指向的變數之間的關係,在程式中用「*」符號表示「指向」。

3、定義指標變數.對指標變數的定義包括三個內容:指標型別說明,即定義變數為一個指標變數和指標變數名的基本形式型別說明符*變數名。

4、int i,j;表示i,j是一個指標變數,它的值是某個整型變數的地址。或者說i,j指向一個整型變數。至於i、j究竟指向哪一個整型變數,應由向i,j賦予的地址來決定。

5、int *s是指向整型變數的指標變數,float *d是指向浮點變數的指標變數,char *g;是指向字元變數的指標變數。應該注意的是,一個指標變數只能指向同型別的變數,如s只能指向浮點變數,不能時而指向一個浮點變數,時而又指向一個字元變數。

6、指標變數的引用,指標變數同普通變數一樣,使用之前不僅要定義說明,而且必須賦予具體的值。未經賦值的指標變數不能使用,否則將造成系統混亂,甚至宕機。

2樓:大野瘦子

指標在用要注意初始化,例如:

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改動該字串的值,由於該字串為常量,而它僅僅是簡單的將指標指向該字串常量。

3樓:中國達人

指標的賦值

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

4樓:柔玉花種黛

p指向變數b的地址答案是d,

a.*p指向變數b的值

*&b=*p

因為p=&b

b.同理

*p指向變數b的值

不是地址

後面的&*b沒有這種表達的c

5樓:情漫都市

同學你好,也許是你的函式概念不是很清楚,首先函式init一個需要接受字元或者字串的函式,你使用void init("ascc''),就相當於把''ascc''作為引數給了這個函式,這正是函式所需要的,所以呼叫成功非常正常,但是你使用*pp=''ddd'',這本身是個無用操作,因為pp是作為函式的一個區域性變數,是用來儲存傳遞給函式的那個字串的,比如''ascc'',如果你自己給它亂賦一個值,那顯然沒有意義,函式就是拿來呼叫的,給予函式需要的引數,函式就能工作了。這樣使用 init(''ddd'')才是對的。

6樓:匿名使用者

是init哦 這個都寫錯了,老兄有點大意啊。

相同的變數名在不同的函式裡可是完全不同的。比如你的那個char *pp;

void init( char *pp);

int main()

希望明白了。以上

7樓:

初始化定義的時候可以這樣賦值 int *pp="ddd",有修改常量區的風險

但是定義指標之後要這樣賦值是不合法的

8樓:

正確答案:pp = "ddd";

*pp="ddd",這個用法,在pp指標還沒有被初始化時,導致程式退出

9樓:匿名使用者

那個*pp是init函式中的區域性變數吧,函式區域性變數應該不能在主函式中使用的

10樓:匿名使用者

賦值有2種,一種就是初始化,既:char *pp = "ddd";

另一種是:

char *pp;

pp = "ddd";

這樣即可。

11樓:

*pp="ddd「不對,指標賦值pp="ddd,沒有*,因為在執行pp="ddd的時候,程式首先在記憶體分配一個可供字串ddd存放的記憶體空間,再將指標pp設定為指向這段記憶體空間的第一個地址,也就是存放字元d的地址。

12樓:術數譚

同學,"ddd"是字串,'d'是字元,你定義的指標是字元型別,怎麼賦值字串呀

13樓:匿名使用者

char *pp;

pp = "ddd";

14樓:匿名使用者

int *a;

a=&1231;加上取地址符

c語言指標的賦值問題

15樓:大野瘦子

指標在用要注意初始化,例如:

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改動該字串的值,由於該字串為常量,而它僅僅是簡單的將指標指向該字串常量。

16樓:林聲飄揚

有錯注意:用指標變數前,必須對指標變數賦值如:int i, *p1;

p1=&i;

再如:int a, b;

int *p1, *p2;

*p1=10; *p2=100;

但指標變數未賦值,即指標指向未知地址,這樣是錯誤的因此:絕對不能對未賦值的指標變數作「指向」運算。

int a=9,b;

int *p=&b;//必須加上這一句

*p=a;

*p=8;

這樣就不會產生錯誤

17樓:匿名使用者

注意大小寫!還有

int a=9;

int *p;

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

*p=8;

這樣就對了。

18樓:七先生是遊戲鬼才

這個還是比較複雜的,你可以學習一下

19樓:匿名使用者

p=&a//把a的地址給指標p

20樓:匿名使用者

語法上沒錯,但可能出現警告,破壞程式其他資料

21樓:渾濃強浩然

p就是一個指標,他指向一個地址,而&p就是p剛才所指向的具體地址,*p是p指向地址裡面的東西。也就是值。*p=&a的意思是把a的地址給了*p,這樣的話p就指向

(指向a的地址)的地址。對指標賦值必須是int*p=null;或者int

*p;p=null。

c語言指標賦值問題 20

22樓:gta小雞

請分清「指標本身的值」和「指標指向的地址中的值」這兩者的區別。指標本身的值就是地址。

int a = 2;

int *p = &a;

//p = 100; //試圖將指標本身的值修改為100,即令指標p指向記憶體地址100的位置,這是未定義行為

*p = 100; //將指標p指向的地址中的值修改為100,即將a的值修改為100

23樓:匿名使用者

int a =0, *p = &a;

*p = 100; 這個是合法的,修改指標指向記憶體空間內容。

int *p =4;直接把整數賦值給指標變數,由於地址4一般是非法地址,訪問的時候會出現問題,所以一般不會把數值賦值給指標。

24樓:扶明軒轅懋

&是一元運算,取變數地址的操作,間接訪問操作用運算子號*.&他返回運算元的記憶體地址,可以賦給型別合適的指標./

列如int

xint

*pxpx=&x

將x的記憶體地址賦給指標變數px,該賦值語句表示指標px制向變數x,

*運算子與&運算子剛好相反,它也是一遠運算子.用語返回指標指向的記憶體地址中存的值!

c語言的賦值問題,C語言指標的賦值問題

上面的說法中,都存在錯誤或不足.1.首先 c a b 的意義是把 a 和 b 這兩個變數的內容 5 和 6 相加得 11,再把 11 這個結果值傳送至 變數 c 所在的儲存單元儲存起來 而不是你想像的 將 a 和 b 這兩個變數組合為一個變數作為 c,或者複製一份變數組合再作為 c.當你用int a...

C語言指標問題,C語言指標問題?

文庫精選 內容來自使用者 zzbo2022 讓你不再害怕指標 前言 複雜型別說明 要了解指標,多多少少會出現一些比較複雜的型別,所以我先介紹一下如何完全理解一個複雜型別,要理解複雜型別其實很簡單,一個型別裡會出現很多運算子,他們也像普通的表示式一樣,有優先順序,其優先順序和運算優先順序一樣,所以我總...

C語言指標問題,C語言指標問題。

最大的寶寶 pointer是指標指向的一個值,此時為2,這個值再自加1自然為3。pointer此時還指向值2,減2的含義是指標回退兩個元素,自然指向了值6。指標本身有值,表示它指向的地址,這個值可以運算,表示對地址的修改。而指標指向的值,其實就是位於這個地址所存的值。在彙編以上層次的程式設計中,記憶...