簡體   English   中英

使用calloc進行數組的正確方法是什么?

[英]What is the way of correct way in using calloc for an array?

我想創建一個指針數組的指針(數組中有10個指針),然后我想給指針一個值。

這是我到目前為止:

char **arraypointer = calloc (10, sizeof (char*));

我如何給這個數組賦值?

我試過了:

arraypointer[0] = "string"

但我得到一個段錯。

編輯:

我想創建一個指向指針數組的指針。 每個指針都有一個struct屬性。 如何訪問此指針的struct屬性? 我沒有要發布的代碼,因為我仍在試圖弄清楚它應該是什么樣子。 此指針的結構將包含一個字符串,該字符串是char *字符串和int數字。 我在考慮它的工作原理如下:

arraypointer[0]->string = "this";
arraypointer[0]->number = 3;

更新:

struct mystruct* pointer = calloc(N, sizeof(struct mystruct));
pointer[0].string = "this"; //notice . instead of ->
          ^
pointer[0].number = 3;
          ^

原始答案:

char **arraypointer = calloc (10, sizeof (char*));
arraypointer[0] = "string";

這兩條線完全沒問題。 如果你嘗試做類似的事情,你會得到一個段錯誤(實際上是未定義的行為)

arraypointer[0][3] = 's';

后來。

而且,如果你這樣做,你會遇到麻煩

strcpy(arraypointer[0], "string");

因為你實際上沒有分配arraypointer[i]指向的任何內存

你必須輸入:

char **arraypointer = (char**) calloc (10, sizeof (char*));

因為calloc意味着無效*

//READING STRINGS USING POINTERS (CALLOC)   

#include<stdio.h>
#include<stdlib.h>
int main() {

    int n;
    printf("Enter number of Strings : \n");
    scanf("%d", &n);
    char** a = (char**) calloc(n, sizeof(char*));
    int i=0;
    printf("Enter Strings : \n");
    for (i=0;i<n;i++) {
        a[i]= (char*) malloc(100*sizeof(char));
        scanf("%s", a[i]);
    }

    i=0;
    printf("**************\n");
    for (i;i<n;i++) {
        printf("%s\n", a[i]);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM