C語言指標題,C語言基本指標多項選擇題?

發布 科技 2024-06-08
13個回答
  1. 匿名使用者2024-01-29

    這個問題本身有問題。

    結果沒有初始化,沒有指向任何空格就傳遞給add函式,這本身就是錯誤的,當然也可以實現,在add函式中申請乙個位址來儲存結果,並將位址發回給結果,但是該位址的**是無法控制的, 容易造成記憶體洩漏。

    void add(int *a,int *b,int** r)int *p=(int *)malloc(sizeof(int));

    p=*a+*b;

    r=p;

  2. 匿名使用者2024-01-28

    是的,有問題,現在的考試真的很困難。

    void main()

    int a = 9,b = 6;

    int c;*不定義這個,程式也可以執行,但存在導致系統異常或崩潰的隱患*

    int *result = &c;*這更好,不會導致記憶體洩漏*

    add(&a, &b, &result);

    printf("%d + d = %d",a,b,*result);

    void add(int *a,int *b,int** r)*r = *a+*b;

  3. 匿名使用者2024-01-27

    不管記憶體洩漏如何,呵呵:

    c:void add(int *x, int *y, int **s)

    s = (int*)malloc( sizeof(int) )s = *x + y;

    c++:void add(int *x, int *y, int **s)

    s = new int(*x + y);

    不會導致記憶體洩漏的版本:

    void add(int *x, int *y, int **s)static int n = 0;

    n = *x + y;

    s = &n;

  4. 匿名使用者2024-01-26

    選擇 b*(p+5) 即 p[5],由於 p 指標指向陣列 s 的第乙個位址,因此 p[5] 實際上是 p[5],即字串終止符'\0'

  5. 匿名使用者2024-01-25

    答案是b。

    p+5) 返回乙個數值,可以直接排除 C

  6. 匿名使用者2024-01-24

    總結。 1. 變數的指標表示變數得到 b。

    a) 值 b) 位址 c) 名稱 d) 標誌 2,已定義 int k=2;int *ptr1,*ptr2;而 ptr1 和 ptr2 都指向了變數 k,下面無法正確執行的賦值語句是 b。

    a)k=*ptr1+*ptr2 b)ptr2=k c)ptr1=ptr2 d)k=*ptr1*(*ptr2) 3.如果指定:int *p,m=5,n;以下段正好是 d。

    c語言問題(指標)。

    親愛的,我正在研究這個問題的答案,請耐心等待。

    好。 感覺有點難做。

    請說。 1. 變數的指標表示變數得到 b。 a) 值 b) 位址 c) 名稱 d) 標誌 2,已定義 int k=2;int *ptr1,*ptr2;而 ptr1 和 ptr2 都指向了變數 k,下面無法正確執行的賦值語句是 b。

    a)k=*ptr1+*ptr2 b)ptr2=k c)ptr1=ptr2 d)k=*ptr1*(*ptr2) 3.如果指定:int *p,m=5,n;以下段正好是 d。

  7. 匿名使用者2024-01-23

    為此問題選擇 B。 *(a+i)) 不是對陣列元素的正確引用。

  8. 匿名使用者2024-01-22

    d 是錯誤的。

    在 a 中,p-a 是指標的運算。 這裡 *p=a,所以 p(位址)的值與 a(位址)的值相同,p-a 為 0

    在 b 中,a[j] 是 a 中的資料,& 是位址,加上 a * 是值,所以 *(&a[j]) 等價於 a[j]。

  9. 匿名使用者2024-01-21

    專案 b,*(a[i]),實際上等同於 a[i]。 取位址字元,&a[i] 表示 a[i] 的位址。 “*address”表示取儲存在該位址位置的值,因此在 *(a[i]) 中,* 和 & 被抵消,這相當於 a[i]。

    當然,答案是d。

  10. 匿名使用者2024-01-20

    const int *p,其中 p 是指向 const 物件的指標。

    int * const p,指標是 const,而不是它指向的物件是 const。

    指向 const 物件的指標(指向 const 物件的指標 - C++ 入門)。

    怎麼寫? const double *cptr;

    CONST 定義 cptr 指向的物件型別,而不是 cptr 本身。 換言之,CPTR 本身不是 CONST,它允許重新分配 CPTR。 它所指向的物件的值(可以是非常量的)不能通過取消引用 cptr 來修改。

    1)如果指標指向乙個const物件,則不允許更改它所引用的const的值。

    2) 將 const 物件的位址分配給指向普通非常量物件的指標也會導致編譯時錯誤。

    3) 不能使用 void* 指標來儲存 const 物件的位址,但必須使用 const void* 型別的指標來儲存 st 物件的位址。

    4)允許將非常量物件的位址分配給指向常量物件的指標,無法通過指標修改其值的行為會導致編譯錯誤。但是,可以通過其名稱修改原始變數的值。 不能保證指向常量點的指標指向的物件的值不可修改。

    因此,“如果 cptr 是指向 const 物件的指標,則 *cptr 在程式持續時間內保持不變”的說法是錯誤的。

  11. 匿名使用者2024-01-19

    前者是指向常量的指標變數。

  12. 匿名使用者2024-01-18

    指向“常量”的指標變數可以通過其他方式完成,而無需更改它所引用的變數的值。

  13. 匿名使用者2024-01-17

    簡單來說,要看p是什麼,從右到左,首先看到的就是*,所以p是指標,那麼p是什麼樣的指標呢? 再往左看,看到 int,所以 p 是指向形狀的指標。 再往左,你會看到 const,這意味著這個 p 指向的形狀是唯讀的,所以最終結果是:

    p 是指向唯讀整形常量的指標。 這意味著 p 的點可以修改,但它指向的點的記憶體值不能修改。

    如果是這種情況:const int * const p,因為 p 是直接被 const 修飾的,所以 p 的點不能修改,因為 int 也是 const,所以 p 指向的整形物件不能修飾。

相關回答
18個回答2024-06-08

#include

int main() >>>More

14個回答2024-06-08

這其實是可以理解的。

只需將 %s、%c、%p 放在一起即可。 >>>More

22個回答2024-06-08

陣列和指標之間的區別:

陣列名稱確實表示指向陣列第乙個位址的指標,但是這個指標很特殊,它的值(指標的值是指標指向的位址)不能被覆蓋,只能覆蓋它指向的內容,換句話說,陣列名稱只能指向陣列的第乙個位址, 如果有陣列 char a;那麼如果 a = a+1; 這是乙個甚至無法編譯的錯誤。 對於普通指標,例如,可能有乙個陣列 char a; 然後定義乙個字元 *p = a; 然後使用 p = p+1 是有效的,這意味著指標 p 指向 &a[1]。 >>>More

27個回答2024-06-08

for (int i=0;i<4;i++)x*=*(p+1);

等效。 for (int i=0;i<4;i++)x=x*a[i]; >>>More

18個回答2024-06-08

………童鞋:你搞砸了你的指標。

首先,填充功能確實設定了您分配給它的所有空間'\0',但指標 p 不再指向您分配的空間,而是指向記憶體中“堆”的頂部; 然後,func 2 再次將其向上移動,按 num 位和位元組移動它,此時它指向 **? 反正不是你想要的地方。 將它指向的記憶體設定為'\0',則 strlen 應該得到 0,後面跟著 blank 將沒有任何輸出。 >>>More