當前位置:首頁 » 編程語言 » c語言指針賦值指針

c語言指針賦值指針

發布時間: 2022-04-26 17:33:42

c語言中能把指針變數賦值給指針變數嘛

指針變數賦值給指針變數
是可以的。
我想補充樓上的
1、就是這兩個指針變數同時指向一個地方
內存
2、指向指針的指針的指針是二級指針。它指向指針。
到看你怎麼用了

② c語言如何給結構體指針賦值

結構體數組指針作為函數參數,通過數組的首地址與偏移量對結構體數組進行scanf的賦值,在函數中通過指針間接訪問到其指向的內存。

舉例:編寫函數,輸入5個學號(int),5個姓名(字元串),5個成績數組(每組三個成績)(int[3]),依次調用函數

#include <stdio.h>

#include <stdlib.h>

struct student //建立結構體,學號,姓名,3門課的分數

{

int num;

char name[10];

int score[3];

}Stu[5]; //初始化,一共5個學生的數據

void getScore(struct student * p) //函數:向結構體讀取分數,一共三門課

{

int i, j;

for (i = 0; i < 5; i++)

for (j = 0; j < 3; j++)

scanf_s("%d", (&(p+i)->score[j]));

}

void getNum(struct student * p) //函數:向結構體讀取學號

{

int i;

for (i = 0; i < 5;i++)

scanf_s("%d", &(p + i)->num);

}

void getName(struct student * p) //函數:向結構體讀取姓名

{

int i;

for (i = 0; i < 5; i++)

scanf("%s", &(p + i)->name);

}

int main()

{

int i, j, average[3] = { 0 }; //average數組儲存每門課的平均分

getNum(Stu); //函數調用

getName(Stu);

getScore(Stu);

for (j = 0; j < 3; j++)

{

for (i = 0; i < 5; i++)

average[j] += Stu[i].score[j];

}

for (i = 0; i < 5; i++)

{

printf("num = %d name = %s Score:", Stu[i].num, Stu[i].name); //依次列印學號 姓名

//printf("%d %d %d", Stu[0].score[0],Stu[0].score[1],Stu[0].score[2]);

for (j = 0; j < 3; j++) //列印三門課的分數

printf(" %d", Stu[i].score[j]);

printf(" ");

}

printf("average:");

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

printf("%f ", (float)average[i]/5); //列印三門課平均分

printf(" ");

system("pause");

return 0;

}

如:

scanf("%c%c%c",&a,&b,&c);

輸入為:

d e f

則把'd'賦予a, ' '(空格)賦予b,'e'賦予c。因為%c 只要求讀入一個字元,後面不需要用空格作為兩個字元的間隔,因此把' '作為下一個字元送給b。

只有當輸入為:def(字元間無空格) 時,才能把'd'賦於a,'e'賦予b,'f'賦予c。

③ c語言指針賦值問題

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

inta=2;
int*p=&a;
//p=100;//試圖將指針本身的值修改為100,即令指針p指向內存地址100的位置,這是未定義行為
*p=100;//將指針p指向的地址中的值修改為100,即將a的值修改為100

④ C語言程序設計 指針變數賦值

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

int a[ 10] ,*p=a; 是聲明,聲明中 *p=a 表示p是指針,初始化把a數組的首地址賦給它。

*p=a;是語句,不是聲明,形式一樣,就不行了!
因為 語句 里,*p 表示p 指向的 值。

同樣的形式,意思不同,形式邏輯不成立,(C語言的缺點!)。
初學者,人人遇到這個問題!

⑤ C語言指針賦值

類型不匹配,這個時候a相當於指針的指針,這樣寫當然不正確了,你要是想取這個地址,可以寫成

p = *(a+1);

⑥ 在C語言中能否直接給指針指向的數據賦值為什麼

可以,但int *p;*p=7;這樣不行。

因為「能直接給指針指向的數據」賦值,而這里的p還沒有指向,所以不能賦值,這種指針有個名字叫「懸浮指針」,是不能給它賦值的。

這樣才可以:

int a,*p=&a;*p=7;

實際上就是使a等於了7。

(6)c語言指針賦值指針擴展閱讀:

注意事項

也可以使用賦值運算符為指針變數賦值,但要保證兩個指針變數的類型相同。

假設有如下變數定義:

int i,j,*p,*q;p=&i;q=&j;

這兩句將變數i和j的地址分別賦值給指針變數p和q;

執行了q=p後,執行該條語句,指針變數p和q都指向了同一個變數i,因此指針變數p和q中存放的都是變數i的地址&i。變數i此時並沒有初始化,只為其分配了內存單元。

注意理解:q=p;和*q=*p

前者為指針變數q賦值,即將指針變數p中存放的某個變數的地址賦值給q。顯然,賦值後,q和p就指向了同一個變數。

後者將p指向變數的賦值給q指向的變數。

例子:

p=&i;

q=&j;

i=2;

j=3;

⑦ 關於C語言中指針賦值的問題

你這樣想說明你還沒有真正理解內存和指針。int
a;表示編譯器隨機取出一個空閑的地址分配給a,不妨設為00000000,長度為sizeof(int),不同編譯器可能不同。int
*p;也表示隨機取出一個空閑的地址分配給p,不妨設為000000f0,長度一般為4個位元組,則這四個位元組現在存儲的內容是不確定的,假設為00000ff0,那麼*p表示地址00000ff0上的值。*p=a則把地址00000ff0的值變為a的值,顯然如果該地址目前正在被某個進程使用,就有可能破壞該進程,因此這種方法是十分危險的。給指針賦值一般有兩種方法,一種是將已經存在的變數的地址傳遞給指針,格式為:p=&a;另一種是首先為指針申請指向的合法內存,C語言中用函數malloc(),然後給已申請的地址賦值,如*p=6。

⑧ C語言程序設計指針變數賦值

int
*p;中的「*」說明定義的一個變數p是指針類型的。

*p中的「*」是一種操作,是取值操作。即去指針指向的那個值。
*p可看作是一個整形的變數。a則可以看成是一個指針。

⑨ 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;

這樣就對了。

(9)c語言指針賦值指針擴展閱讀:

指針的賦值

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

⑩ C語言指針怎麼賦值呢

要改p–>a的值,和在這個函數裡面是一樣的
直接
p–>a=要賦值的值
這樣就可以了
唯一需要注意的就是要賦值的是結構體指針還是結構體變數,如果不是指針那就要改成點了
p.a這樣

熱點內容
編程說明書 發布:2025-07-15 08:16:39 瀏覽:758
android請求超時 發布:2025-07-15 07:56:57 瀏覽:528
修改linux的主機名 發布:2025-07-15 07:52:46 瀏覽:905
天龍八部自動挖礦腳本怎麼寫 發布:2025-07-15 07:42:01 瀏覽:648
本地編譯器怎麼運行 發布:2025-07-15 07:42:00 瀏覽:995
加密狗會壞嗎 發布:2025-07-15 07:38:32 瀏覽:563
jdbc讀取資料庫 發布:2025-07-15 07:38:23 瀏覽:322
華為手機如何設置隱私密碼鎖 發布:2025-07-15 07:36:09 瀏覽:980
java怎麼導入jar 發布:2025-07-15 07:22:02 瀏覽:397
雷蛇鍵盤配置文件怎麼設置完整視頻 發布:2025-07-15 07:20:31 瀏覽:412