1樓:匿名使用者
typedef 是 「定義一種資料型別」 ,就好像內建的資料型別如 int , 它僅是乙個定義,不產生例項物件,即不分配任何記憶體,怎麼能給它賦值呢?
對陣列賦初值的方法用for迴圈,在這裡還可用memset
nod的記憶體分配在動態棧上,所以值不能確定,要初始化,必須使用顯式的方式。
2樓:匿名使用者
cdma980的回答是對的:結構體和類的定義不可以對資料成員初始化的。
要達到你的目的,那麼就要為這個類寫構選函式,然後初始化指標值。
typedef struct classnod}classnod;
3樓:
這問題大家都回答得很精彩!所謂指標陣列就是每乙個陣列元素都是指標,為了避免每個元素指向系統記憶體關鍵區域或其它程式記憶體區,促使系統癱瘓!所以必須使每個指標初始化為空或指向正確的記憶體區域!
4樓:匿名使用者
結構體和類的定義不可以對資料成員初始化的.
你要認真看下書.
typedef struct classnodclassnod;
這樣可以:
classnod nod;
for(int i=0;i<20;i++)nod.child[i]=null;
5樓:
沒有預設初始值,全置null可以寫迴圈,當然也可以這樣:
memset(nod.child, 0, sizeof(char*)*20);
c++中關於指標陣列的問題。
6樓:匿名使用者
*p即p[0],即陣列中下表為0的元素
7樓:聽不清啊
舉個例子:
int x=20,y=10,*a[2];
a[0]=&x,a[1]=&y;
就會輸出x=20 y=10
------------------
1)*a即a[0],在上例中也就是x的位址。
2)中括號內數字可以由編譯系統自動測定初始化了幾個元素,char *p=; 就相當於char *p[1]=;
char *q=; 就相當於char *q[2]=;
c++指標陣列的問題
8樓:匿名使用者
1 申明乙個指向ctypeptrarray的指標,這僅僅是個指標不包含物件
2 定義乙個ctypeptrarray型別的物件,可以直接使用3 定義乙個ctypeptrarray引用,你這樣寫也是不對的,引用必須要指向乙個合法的物件,所以說你至少寫成下面這樣,才能編譯通過:
ctypeptrarraym_papele1;
ctypeptrarray& m_papele2=m_papele1;謝謝
9樓:匿名使用者
下面三個有什麼區別呢?
t *t;
t t;
t &t = t;
明白嗎?你的問題與指標陣列完全沒有關係。
c++ delete指標陣列的問題
10樓:匿名使用者
這個問題很多人都曾經問過,但這是個無用的問題!
你只需要記住,new之後,在不使用該指標變數時進行delete釋放就好!
至於delete會做哪些事,如何去釋放,不是現在的能力能理解(了解)了的,那是系統底層的應用,不用過多關心。
一般情況,釋放只是告訴作業系統,「我」不再使用該記憶體了,可以提供給「別人」使用了!
而在沒有人使用時,你當然可以再次讀到相應的資料。
int *p=new int ; delete p ; 非陣列的釋放
int *pa=new int[5] ; delete pa ; 陣列的釋放
11樓:匿名使用者
delete pnumber後,pnumber所指向的int型的變數被撤銷,但是pnumber所存放的位址值是不變的,所以pnumber[1]後將原先pnumber的值加1,現在pnumber存放的是new int[2]開闢的第二個儲存空間的位址了(沒有被銷毀),再經過cout << pnumber[1] << endl;後將輸出第二個儲存空間的值。
12樓:嘿嘿
linux下eclipse編譯器表示輸出正常,你的第二個cout結果32我表示不理解,請問閣下的編譯器是?你的刪除方法沒有問題,之後給pnumber=null,就萬無一失了,嘎嘎
13樓:
我不知道你用的什麼編譯器,我用vc6.0編譯時正常的
c++ this指標的問題 5
14樓:千鋒教育
如果你想在類成員函式中顯示呼叫類成員變數採用「this.成員變數」這種形式就行了,返回this指標:return this;
如:classa setvalue(int a) {this.a = a;
return this;
c++指標指向陣列的問題
15樓:
你可以這樣寫short (*b)[10]=&a;
對乙個陣列取位址時,代表的是整個陣列整體,包括對&a做加1運算也是以陣列長度為單位,
如 b = &a+1,實際b已經加了10個short長度而不是1個short
16樓:匿名使用者
你去看一下陣列的基本資料了;陣列名的值是乙個指標常量,也就是陣列第乙個元素的位址;
17樓:匿名使用者
&a的型別是short (*)[10]; 不是short*short (*)[10] 是指向乙個有10個short元素的陣列的指標
比如有short bb[3][10]; 那麼 bb和&a就是一種型別
short (*pa)[10]=&a; //這樣
18樓:下四國的流氓
a已經是位址了,&a是位址的位址
宣告的陣列a[10],a代表a[0]的位址
19樓:匿名使用者
這個a就是a[10]的指標,你再取&a就是指標的指標了。再簡單點說a=&a[0],這樣你就懂了吧。
20樓:
陣列a的"a"本身就是位址值,
short *b=a; //正確
&a沒什麼意義所以
short *b=&a;//錯誤
c++中對乙個指標陣列使用sizeof
21樓:匿名使用者
#include"iostream"
using namespace std;
int main(void)
{int iarray[100];//定義乙個int型陣列cout<
22樓:甲公尺府餐廳
sizeof(指標) = 4;
sizeof(指標陣列) = 4 * 數級長度;
例:定義:char *p[100];
則:sizeof(p) = 400;
你提的問題不詳細,如果答非所問,你可以再補充一下問題。
23樓:匿名使用者
int *p1;
char *p2;
sizeof(p1)=4;
sizeof(*p1)=4;
sizeof(p2)=4;
sizeof(*p2)=1;
char *a[100];
sizeof(a)=400;
sizeof(*a)=4;
sizeof(**a)=1;
關於c 中sizeof用法和陣列指標問題
迎風搖擺的樹葉 sizeof arr1 arr1是陣列,arr1裡面是int變數 佔據4個位元組,所以3個變數佔據12個位元組。int source source是乙個指標,若是sizeof source 之後你會發現是4 因為所有的指標都是大小為4 source是指標所指向的元素,int型別 佔據...
關於C語言二維陣列指標問題
如果是前者的話,每行應該輸出乙個元素才對,如果是後者的話又應該只能輸出每一行的首元素才對呀?正如樓上2位仁兄所言,p 指的是前者 下乙個元素的位址 樓主的疑問似乎是認為,該程式段 每行應該輸出乙個元素才對 這是不對的,語句printf 3d p 是每輪迴圈都要執行的,即按每個數字佔3個int大小列印...
C 問題,關於將陣列地址賦給指標的問題
int pointer 3 arr arr本身就是指標,p也是指標,如果希望用p指向陣列arr,只需p arr即可。 arr本身已經是指標型別,p arr是可以的。 白羊打醬油 的意思是取地址,而 的意思是從地址中取值。比如說 arr 0 就是將值arr 0 的地址取出賦給指標p,而陣列名arr本身...