c指標陣列問題,C 中關於指標陣列的問題。

時間 2022-05-17 20:25:08

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本身...