[英]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.