C指標陣列

2022-02-22 12:24:55 字數 1206 閱讀 1633

1樓:

你的概念似乎有點混亂...首先p的型別有問題.你要它指向people的首位址.

那至少應該是student*型別吧..還有你的這句*p=people[0]; 明顯是錯的..你這句的意思是將people[0]的值拷貝到p所指向的位址..

但這個時候p並沒有指向任何東西..正確的寫法是p = &people[0]或者是p=people.你的輸出那裡也很混亂..

我幫你改了..自己仔細看看吧..還有不要亂用數字常量..

比如3這種東西不該亂出現..將它寫為const int max = 3;會很好.這是規範.

你現在體會不到.等你寫的**很複雜的時候就知道用數字常量有多容易出現bug了..下附**..

希望對你有幫助..

#include

#include

#include

using namespace std;

const int max = 3;

int n,i;

struct student

people[max];

ostream& operator <<

system("pause");

for(i=0;i

2樓:匿名使用者

你的程式有點小問題,people[3]但是你確輸入了4個,所以出現了問題,還有print()函式也有點問題,按照下面做就沒問題了;

#include

#include

#include

using namespace std;

void print(struct student *st, int number);

struct student

people[3];

void main()

print(people, 3);

system("pause");

} void print(struct student *st, int number) }

3樓:匿名使用者

0x00402fc6 處未處理的異常: 0xc0000005: 讀取位置 0x00000014 時發生訪問衝突

應該是未初始化 位址訪問到了系統關鍵位置被禁止

C語言指標陣列的問題

關注位址型別,只要型別匹配就正確,下面描述中注意括號,用來斷句。int a 2 3 陣列型別是int 2 3 位址型別是 int 3 含義是 指向 含3個整數的一維陣列 的常量指標,該指標指向的位址為3個列的一行,所以陣列名本身就是行位址。int p 3 陣列型別是 int 3 含義是 含3個 整數...

c中,陣列名跟指標有區別嗎,C語言中陣列名和指標的區別

其實可以認為陣列名就是乙個不可更改的常量指標。但是 嚴格來說,二者有一定區別,比如sizeof a a為陣列名的時候,算出來是a這個陣列所佔位元組數,但是如果a是指標,不管指向什麼,結果都是乙個int的位元組數 取決於特定機器 因而,有人認為陣列名是乙個可以退化為常量指標的型別,這種退化在陣列名作為...

關於c語言二維陣列陣列名與指標的問題

先說些這個2維陣列 int arr 3 4 可以理解為乙個3行四列的矩陣,那麼第一維arr 0 arr 1 arr 2 中存的分別是對應行的位址,也就是說arr 0 存的是乙個 大小為4的整形陣列位址 這樣的話就好理解了,arr存的位址值其實與arr 0 本質上是相同的。都是這個連續空間的開始位址。...