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 時發生訪問衝突 應該是未初始化 位址訪問到了系統關鍵位置被禁止 關注位址型別,只要型別匹配就正確,下面描述中注意括號,用來斷句。int a 2 3 陣列型別是int 2 3 位址型別是 int 3 含義是 指向 含3個整數的一維陣列 的常量指標,該指標指向的位址為3個列的一行,所以陣列名本身就是行位址。int p 3 陣列型別是 int 3 含義是 含3個 整數... 其實可以認為陣列名就是乙個不可更改的常量指標。但是 嚴格來說,二者有一定區別,比如sizeof a a為陣列名的時候,算出來是a這個陣列所佔位元組數,但是如果a是指標,不管指向什麼,結果都是乙個int的位元組數 取決於特定機器 因而,有人認為陣列名是乙個可以退化為常量指標的型別,這種退化在陣列名作為... 先說些這個2維陣列 int arr 3 4 可以理解為乙個3行四列的矩陣,那麼第一維arr 0 arr 1 arr 2 中存的分別是對應行的位址,也就是說arr 0 存的是乙個 大小為4的整形陣列位址 這樣的話就好理解了,arr存的位址值其實與arr 0 本質上是相同的。都是這個連續空間的開始位址。...C語言指標陣列的問題
c中,陣列名跟指標有區別嗎,C語言中陣列名和指標的區別
關於c語言二維陣列陣列名與指標的問題