我想创建一个指针数组的指针(数组中有10个指针),然后我想给指针一个值。
这是我到目前为止所做的:
char **arraypointer = calloc (10, sizeof (char*));
我如何为这个数组赋值?
我试过了:
arraypointer[0] = "string"
但是我得到了一个段错误。
编辑:
我想创建一个指向指针数组的指针。每个指针都有一个struct属性。如何访问此指针的struct属性?我没有要发布的代码,因为我仍在试图弄清楚它应该是什么样子。此指针的结构将包含一个字符串,该字符串是char *字符串和int数字。我在考虑这样做:
arraypointer[0]->string = "this";
arraypointer[0]->number = 3;
答案 0 :(得分:2)
的更新强> 的
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]
指向
答案 1 :(得分:0)
您必须输入:
char **arraypointer = (char**) calloc (10, sizeof (char*));
因为calloc意味着无效*
答案 2 :(得分:0)
//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]);
}
}