亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

求問一下,在VC++中int[2]和int*有什么區別?為什么不允許通用?

求問一下,在VC++中int[2]和int*有什么區別?為什么不允許通用?

守候你守候我 2021-02-16 14:10:07
int*就是指明int數組的地址不是么,聲明的時候用int*var或者int var[2] (注:也可能是其他值),后來賦值用int var[0]=1;int var[1]=1都可以賦值。但是編寫方法的話,兩者作為參數的話..就不通用了..它會報錯告訴你 int* 和 int[2]不是一個類型不能通用,這兩者有什么區別么?為什么不能通用?萬一想在函數參數里聲明一個長度并不確定的數組該咋辦?同時...聲明一個常數不確定的數組除了使用int*之外還有別的方法么?
查看完整描述

2 回答

?
互換的青春

TA貢獻1797條經驗 獲得超6個贊

【int*就是指明int數組的地址不是么】

不是。int * 和 int []是完全不同的概念。
int * a; // 聲明一個指針變量,變量名是a,在32位機器下,指針變量是一個32位數字。該數字具體的值是內存地址。當然,這是指針的一般用法。實際上指針變量就是一個32位數字,他當然可以表示任意一個32位數字,不必一定要是某個變量的內存地址。
int a[20]; // 聲明一個數組,數組名是a,數組可以存20個int變量。根據C語言里面的規定,數組名同時可表示數組的首地址,所以a也可以是一個地址,這個地址就是該數組的首地址,同時也是第一個元素的地址即a[0]的內存地址。a[0]的內存地址,跟a[0]具體等于多少,沒有明面的直接關系。

一般而言:
int a[20]; // 聲明一個數組,并分配空間
int *a; // 聲明一個指針變量,只分配存儲該指針變量的空間,即32位數的空間。
int *a = new int[20]; // 聲明一個指針變量,分配存儲該指針變量的空間,同時聲明并定義一個int數組,分配空間為20 * sizeof(int),并且,將分配的這個空間的內存地址的值,賦值給指針變量a。

查看完整回答
反對 回復 2021-03-22
?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

int* 是int的地址,不是數組的地址

查看完整回答
反對 回復 2021-03-22
  • 2 回答
  • 0 關注
  • 569 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號