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

2021-08-14 06:08:01 字數 3458 閱讀 6520

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語言中0102為什麼等於,c語言中0102為什麼等於

寫錯了吧。是 012 吧。0開頭的 012 是 八進位制整型 12,等於 十進位制 10printf d n 012 輸出 10若用 格式 o 則輸出 12 printf d n 010 2 010是八進位制數 十進位制8 8 2 10 以 d形式輸出 嘛?010是八進位制的10,換算成十進位制是8...

c語言中為什麼char a,C語言中char a 什麼意思,他和char ( )a 有什麼什麼區別?

char a abcd 中a指標指向的地址儲存的內容 abcd 為字串常量,是放在靜態儲存區 char a 10 儲存的內容放在棧上 用scanf 進行輸入操作時,只能修改棧中的變數值,靜態儲存區的常量值不能被修改,所以會報記憶體錯誤 char a char a 表示將變數 a進行強制型別轉換為ch...

c語言中什麼是原型定義,C語言中函式的定義格式是什麼,函式原型宣告的語法格式?

我還直是不知道呢,我說說自己的理解吧,一個函式,可能在別外被引用或是在本檔案中但是要先引用了而後面才有函式定義,此時編譯器需要先行知道這個函式返回型別和引數類形,才可以正確的幫著做嚴格的資料型別和引數個數的檢查 如不提前申明就會當做是返回int 型,引數都當int型且不能檢查引數個數 這個函式在定義...