C語言中int pp 5為什麼是不合法的

時間 2021-08-14 06:08:21

1樓:匿名使用者

注意變數和數值的區別

int *p;

p=(int *)malloc(sizeof(int));

*p=5;

或者int *p,a;

p=&a;

*p=5;

p是一個指標,指向一個記憶體地址,你不指明p指向的位置,程式怎麼會知道你要給哪塊記憶體賦值呢?你可以申請一塊堆空間給p,或者直接定義一個變數,讓p指向該變數

2樓:伊·梵

int *p;

*p=5;/* 這時候p還沒有初始化呢,*p=5;可能導致系統崩潰,所以編譯器都要求先給指標賦值,然後再給指標的物件賦值*/

int a;

int *p=&a;/* 定義指標並初始化 */*p=5;/* 給指標物件賦值,相當於a=5; */

3樓:匿名使用者

p只是指標,沒有指向儲存空間,就是說根本沒有地方來放5這個值。

應該int i,*p;p=&i;*p=5;或者

int *p;p=malloc(sizeof(int));*p=5;

4樓:

指標必須有指向的物件,比如上面改為:int a,*p=&a;就ok了!!

5樓:匿名使用者

指標變數的賦值不對

……int a=4;

int *p;

p=&a;……

6樓:醉舞弄清影

p為指標,沒有宣告指向,不能直接賦值

c語言中int *p[5]與 int (*p)[5]的區別

7樓:姓從蓉祕素

你是不想問

int*p[

]和int

(*p)

[]的區別啊[]

的優先順序高於*

所以前者表示指標陣列,而後者是陣列指標,例如int*p[6]

表示p有6個元素,每個元素又是一個int型指標變數。int(*p)[6]表示指向具有6個元素的一維int型陣列的陣列指標變數

8樓:衄潲

樓上說的是錯的,int *p[5],首先

它是一個陣列,它的大小是5,它裡面存放的資料型別是int *,也就是整型指標。 所以它叫指標陣列、 (從右向左解析這個表示)

int (*p)[5],首先p是一個指標,指向大小為5的陣列,因此這叫陣列指標。(括號優先)

這個在《c專家程式設計》裡面說的很清楚。你可以看一下。

9樓:庾詩珊趙寄

int(*p)[4];//是指向一個2維陣列的指標int**p;//是一個指標的指標

兩個都是指向地址的

int(*p)[4]

是接收二維陣列的地址(常量)

int**p

是接收指標變數的地址(變數)

我是這麼理解的,不知道對不。

10樓:貴華燦僧琛

你確定你輸入的語句沒有問題嗎?

int*p();//這是一個整型指標函式,

int(*p)();//這個不能成為語句。

11樓:陳大濤

其實我們先討論一個優先順序的問題,的優先順序高於*,這就是為什麼後者加了一個(),int *p[5]定義一個指標陣列p,講到底這個p是一個陣列,陣列內的元素是5個指標,而陣列內的每一個指標指向一個int型的變數;int (*p)[5]定義了一個指向5個元素的一維陣列的指標。

12樓:匿名使用者

第二個就是這個指標所指的值是一個大小為5個int的陣列的首地址。換句話說,p+1(陣列地址+1)代表記憶體地址下移了5個單位。

13樓:匿名使用者

int *p[5]那麼p[0]是一個int指標

int (*p)[5] 那麼p是一個指向陣列的指標

c語言中的int(*(*p5)(int*))[5];怎麼理解?

14樓:

int (*(*p5)(int*))[5];——p5是個指標,指向一個具有一個int *型形參的函式,這個函式返回一個指向具有5個int元素的陣列的指標。

c語言中*p=5 p=5有什麼不同哦

15樓:強哥

*p=5中的*p表示p為一個指標變數,即給指標變數賦值5,指標變數是指存放地址的回變數;而p=5中的p為一不同變答量,給變數p賦值為5。

一般變數存放的是資料本身,而指標變數存放的是資料的地址。

*p=5中的*只在說明為一指標變數,而p為指標變數名,指標變數中只能存放地址,即這個5為地址5

p=5中的p只為一變數,這樣一來該變數的值為5。

呵呵,不知道清楚沒!希望對你有所幫助

16樓:匿名使用者

10];

cout<<"請輸入陣列a:"<>a[i];

cout<<"請輸入數x:"<>x;

for(int i=0;i<10;i++)if(x==a[i]) a[i]=0;

for(int i=0;i<10;i++)cout<

int b[10],a[10];

int j(0);

void fun()

}void main()

cout<

i=b;}}

17樓:匿名使用者

*p是讀取指標p指向的地址的數值

p是指向的地址

18樓:匿名使用者

p=5就是把數字5賦值到p

*p=5中的*p表示p為一個指標變數,即給指標變數賦值5,指標變數是指存放地址的變數

c語言中 int*p[4] 和 int(*p)[4]的區別是什麼?

19樓:匿名使用者

int*p[4]是指標的陣列

,也就是說它

是一個陣列,陣列裡存的是一個個的指標

int(*p)[4]是陣列的指標,也就是說它是一個指標,指向的是一個陣列。指標指向的型別會影響到指標加減運算時地址的位移。比如說有一個陣列 int a[4],加上取址運算子 &a,這個表示式的型別就是指向陣列的指標,可以這樣賦值 p = &a;。

一般用於向函式傳遞二維陣列的時候使用這種型別,這時還有一種更直觀的寫法

void matrix_sum(int matrix_a[4], int matrix_b[4])

這種寫法和

void matrix_sum(int (*matrix_a)[4], int (*matrix_b)[4])

是等價的。

20樓:望闌珊將盡

結合性不一樣:前者是指標陣列,為4個int指標的陣列,有4個元素;後者是陣列指標,為一個指標,型別為指向包含4個int型別元素的一維陣列的指標。

c語言中temp是什麼,C語言中temp是什麼

temp 是自己定義的。常常定義為起臨時作用的變數。比如有a,b兩個變數,現在交換他們的值,就再定義個temptemp a a bb temp 這樣就實現了交換兩個值。 一般只是用來定義區域性變數的,由於臨時使用,所以名字取的有點隨意. 天雲一號 在c語言中,temp沒有特別的含義,既不是關鍵字也不...

c語言中char str括號裡為什麼是

這表示的是字元陣列,128是字元陣列長 不是字串長 char str 456 也是可以的。其中每個成員的值在 128 127之間,str 0 str 455 每個值不能超過127.如果超過,則擷取低位位元組存貯。題目裡是統計輸入字串中小寫英文字母個數,開頭用的就是這個。這個就好理解了。ascii 就...

在c語言中3 2為什麼等於,在c語言中3 2為什麼等於0

因為編譯時候沒法知道其是什麼型別的數,所以可以稍微改一下,在3和2後面加一個小數點 include main l語言之父 因為3預設的是int型的常量,所以3 2的輸出結果為了與被除數一致就輸出0 0.5進行int型別轉換後就變成了0 這裡需要注意的就是c語言除法中,結果的資料型別是會轉換成被除數的...