首頁>Club>
8
回覆列表
  • 1 # 後的與我

    (*p)[3]是說p指向一個二維陣列,陣列列數為3列,行數不定,比如int a[5][3];p=a;所以p是一個二維陣列指標。而*p[3]呢是一個指標陣列,即p[0],p[1],p[2]分別都是一個指標,如int *p[3];int a[3],b[3],c[3];p[0]=a;p[1]=b;p[2]=c;這樣可以理解麼

  • 2 # 髒話比謊話乾淨558

    int *p宣告瞭一個整型指標變數。

    p=s 是將 s的值附給 p ,當然s也要是地址或指標型別的

    *p 是p所指向的儲存空間,是一個整數,就是把s這個整數寫入到 p 所指向的地址。

  • 3 # 活潑風聲7x

    int * p是宣告一個指向整形資料的指標p,不知道你這個s變數是幹什麼的,但p=s是把變數s的值賦給指標變數p,這時p存的是地址,*p=s是把變數s的值存到指標p所指向的記憶體單元中。

    C語言裡的。

    *p=s

    把s的值賦給指標p指向的記憶體(陣列)

    p=*s

    把指標s指向的值賦給變數p

  • 4 # 既往不咎886

    char *) p 這種寫法是不是常用於型別的強制轉換?是,用於將非char型別的指標轉換成char型別的指標

    char * P 的意思是定義一個字元指標,它的值是一個字串(或陣列)的起始地址

    如:char *p="hello!"; p指向字串hello!

    又如:

    char a[10]="world!",*p;

    p=a;

    p指向字元陣列a,a的值為字串world!,p也指向字串world!

  • 5 # 使用者3179433186306055

    首先你要明白,a是個十六進位制的地址常量,a其實就是a[0]這個數值的地址,也就是a=&a[0] , p這個字母一般把它定義為地址, *p就是p指向的數值的值,你卻把一個值定義為一個地址(*p=a 這種寫法是錯誤的),不符合常理。不能這樣定義, 只可定義為p等於a ,也就是*p等於a[0],p指向a[0], 你所求的是 *(p+2)的值,也就是求 a[3]的值。 因為有個定理因為當p=a,也即*p=a[0]時 那麼 a[1]==*(p+1) a[2]==*(p+2) ..... 依次類推 a[i]==*(p+i) ,你所求的就是 *(p+2) 就是a[2],也就是3. 陰差陽錯,你定義的錯了,結果卻對了,我也有點糊塗了。這是你的跑圖正確的用法我知道你的問題了,你寫的沒錯。 你定義的時候,同時定義了陣列和地址變數並且賦值,你用的是逗號隔開的,不是分號,你所謂的*p=a 其實是 int *p=a, 也就是 int *p ; p=a;一句話,你寫的並沒有錯。只是容易誤解。歡迎大家給我點贊,這麼多回答的,就我才是明白人。

  • 中秋節和大豐收的關聯?
  • 心室舒張末期壓力與動脈舒張壓的區別?