c語言程式設計 指標變數賦值,C語言程式設計 指標變數賦值

時間 2022-03-07 09:55:04

1樓:樂跑小子

要將指標指向的值賦值到變數上, 需要將指標指向的值取出,然後執行賦值操作。

對指標取值需要使用取值運算子*,這個符號和乘相同,但功能不同。用於取值時,*為單目運算,與後續的指標相結合,實現取指標指向的值的效果。

比如int a = 10;

int b;

int *p = &a;

這時p指向變數a的位址,指向的值為10,要將其賦值給b,需要b = *p;

2樓:

c語言 形式邏輯不成立(c語言的缺點!)。

int a[ 10] ,*p=a; 是宣告,宣告中 *p=a 表示p是指標,初始化把a陣列的首位址賦給它。

*p=a;是語句,不是宣告,形式一樣,就不行了!

因為 語句 裡,*p 表示p 指向的 值。

同樣的形式,意思不同,形式邏輯不成立,(c語言的缺點!)。

初學者,人人遇到這個問題!

3樓:匿名使用者

int *p; 代表定義指標變數

*p在語句中使用代表取值

但是如果是這樣 int *p ,a[10];

*p=a;就不行了

正確的應該是 p = a;

4樓:匿名使用者

int *p;中的「*」說明定義的乙個變數p是指標型別的。

而 *p中的「*」是一種操作,是取值操作。即去指標指向的那個值。

*p可看作是乙個整形的變數。a則可以看成是乙個指標。

5樓:好紅客

* 稱為指標運算子 主要有如下兩種用法:

* 出現在資料定義語句中時,*在資料型別與變數之間,是乙個二元運算子,用來定義指標變數。例如:int * ip;

int a[ 10] ,*p=a;表示的也是定義乙個指標變數 p 同時把a的首位址給p

* 出現在指標變數表示式左邊時,是乙個一元運算子,表示訪問指標所指物件的內容。例如: int a =10; * p=a ; printf("%d",*p) 表示輸出 a 的值10

c語言指標的賦值問題

6樓:大野瘦子

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

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

7樓:林聲飄揚

有錯注意:用指標變數前,必須對指標變數賦值如: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;

這樣就不會產生錯誤

8樓:匿名使用者

注意大小寫!還有

int a=9;

int *p;

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

*p=8;

這樣就對了。

9樓:七先生是遊戲鬼才

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

10樓:匿名使用者

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

11樓:匿名使用者

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

12樓:渾濃強浩然

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

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

*p;p=null。

c語言指標變數的賦值和做函式的引數

13樓:匿名使用者

1、指標變數的賦值,分為定義時賦值(初始化)和單獨賦值,如:

int x ;

int * px=&x ; //定義時賦值,也稱初始化,注意這裡的*是跟隨int的,即變數px是int *型別變數!  實際上的賦值語句是px=&x ;

int * py ;

py=&x ; //單獨賦值,將py指向x*py=10 ; //這裡的*,是引用指標中的資料操作符,*跟隨的變數必須是指標型別變數,否則會出錯!  *py就是x,這裡相當於x=10;

#include

void func( int a, int b, int *pmax )

void main()

14樓:

左邊的getmax函式返回乙個int型別的max

右邊的getmax函式沒有返回值,函式引數是int型別的變數a,b,c和指向int型別變數的指標變數m

在呼叫getmax函式時,函式引數中的max是指標變數,呼叫指標都要加上&表示呼叫的是指標位址。你這樣記好了,如果遇到指標,定義函式的引數中要加*,呼叫函式的引數中要加&,一般都是這個規律。

15樓:靈狐

是一樣的,*pi=&i只是在定義的時候把 i 的位址給 pi指標(px指向x的位址)。「為什麼右邊同樣是位址,左邊不相等呢?」這段不知道什麼意思?

它們的區別是 左邊是利用返回值來讀函式,而右邊是利用函式呼叫, 因為只有只有指標才能修改位址的值,要傳個位址給它,呼叫函式中的max要取 *,獲取它的值。

16樓:

左邊傳的是數值。這樣傳過去,max這個變數自己的值不會出現變化。靠return來返回運算結果。想應的你要用返回值,也要用東西來接著他。

右邊傳過去的是max的位址。根據計算結果會改變max的值。直接輸入位址我沒試過。不建議人腦來指定記憶體位址,畢竟你不知道你指定的這組數字代表的記憶體現在裝了些什麼。

c語言如何把指標指向的值賦值到變數上。。。

17樓:匿名使用者

str1是個常量指標,不能對他進行賦值操作, 用也應該寫成p=str1; 另外初始化的話一般是char* p=null; 或者char* p; p=null;

18樓:風若遠去何人留

要將指標指向的值賦值到變數上, 需要將指標指向的值取出,然後執行賦值操作。

對指標取值需要使用取值運算子*,這個符號和乘相同,但功能不同。用於取值時,*為單目運算,與後續的指標相結合,實現取指標指向的值的效果。

比如int a = 10;

int b;

int *p = &a;

這時p指向變數a的位址,指向的值為10,要將其賦值給b,需要b = *p;

19樓:匿名使用者

str1==&str1[0]是乙個指標 , p也是指標, *p就不是了所以str1=*p坑定不對用strcpy(char *dest,const char *src); 作用:把從src位址開始且含有null結束符的字串賦值到以dest開始的位址空間strcpy(str1,p);

c語言中可以給指標變數賦值常數嗎?

20樓:a羅網天下

如:char *p,a='5';

p=&a;

p="abcd";

解析:p申請了空間(在常量區),存放了字串,所以最後可以返回位址。

以字串形式出現的,編譯器都會為該字串自動新增乙個0作為結束符,如在**中寫

"abcd",那麼編譯器幫你儲存的是"abcd\0"。

1、定義指標變數的一般形式如下:

型別名*指標變數名1,*指標變數名2,... *指標變數名n ;

2、空指標

空指標是乙個特殊的指標,它的值是0,c語言中用符號常量null(在stdio.h中定義)表示這個空值,並保證這個值不會是任何變數的位址。空指針對任何指標型別賦值都是合法的。

乙個指標變數具有空指標值表示當前它沒有指向任何有意義的東西。

3、void指標

(void *)型別的指標叫通用指標,可以指向任何的變數,c語言允許直接把任何變數的位址作為指標賦給通用指標。

但是需要注意void*不能指向由const修飾的變數,例如第三句是非法的,只有將ptv宣告為const void * ptv;,上述第三句ptv = &test才是合法的。

當需要使用通用指標所指的資料參加運算時,需要寫出型別強制轉換。如通用指標ptv 所指空間的資料是整型資料,p是整型指標,用此式轉換:p=(int *)ptv;

21樓:

c語言中可以給指標變數賦值常數,賦值方法為:

1、首先開啟microsoft visual c++軟體,單擊「檔案」選單->「新建」,新建乙個檔案,檔名字尾為.c。

2、新建好檔案後,輸入如下內容。

3、然後我們在之間輸入函式的內容,我們先定義變數c1,變數的型別為char,字元型。

4、然後,我們用printf語句進行輸出。

5、當內容輸入好後,我們點選圖中工具按鈕,對程式進行檢測,如果沒有錯誤,會得到下圖所示效果(紅線畫出)。

6、檢測到沒有錯誤後,點選執行(紅色感嘆號),彈出的黑色視窗中為最終結果,可以看到大寫字母「a」顯示在上面。

22樓:匿名使用者

賦值當然可以啊,不能用位址引用

舉例://int

int * p = new int;

*p = c_int_1; //這個是可以的,賦值p= c_int_1; //這個不可以,位址複製了//字串

char * p;

p = "abc"; //字串這樣就可以,因為這個常量編譯器自動賦予了空間

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

因為一維陣列陣列名就是第乙個元素的位址,二維陣列,是 每個元素為一維陣列 的一維陣列,所以,int a 3 5 a就是乙個有5個int元素的一維陣列 a 0 的首位址。a i 就是a i 0 的位址,a i j就是a i j 的元素位址。這個簡單,看圖 a就是a 3 5 的首位址,也是a 0 的首位...

C語言指標程式設計,C語言用指標程式設計實現strcat函式的功能

雖然邊產生的不是乙個很簡單的程式設計,需要新學習。c語言用指標程式設計實現strcat函式的功能 1 首先開啟vs2014,新建乙個專案。2 新增標頭檔案。3 新增main主函式。4 定義乙個函式addtwonumbers。5 在main函式定義a,b,sum。6 宣告函式指標ptr sum。7 將...

急需,c語言程式設計題,用c語言編,急需,C語言程式設計題,用C語言編

include int main printf 李 d 王 d 張 d n a,b,c include stdio.h include string.h struct personleader 3 int main printf n for i 0 i 3 i printf 5s d n leade...

c語言的指標賦值問題

char p p才是指標,p是p指向位址的值。如果x是變數,x是取x的位址 p x 是往p指向的位址裡面存入x的值 p是指標,但實際上p也是乙個變數,只不過p裡存的是個記憶體位址 c語言哪來的引用!第乙個是p指向x的位址。即p中存放的是x位址的位址。也可以是正確的,但是很可能達不到你的預期目的在定義...

C語言變數和指標問題,C語言中「指標」和「指標變數」的區別是什麼??

這個main函式裡面一共呼叫了3次fun函式。fun函式是利用a 10 作為輸入的。第一次呼叫fun p,0,3 需要對a 10 進行兩次的位置的對調,一次是0和3位置上面的資料對調,第二次是1和2位置上的資料對調。這是的結果a變成 4,3,2,1,5,6,7,8,9,0 第二次呼叫fun p,4,...