该代码仅向我输出指向字符串的指针数组中最后一个指针的值,

问题描述 投票:0回答:1

输出在数组中最后一个vlaue的三倍是什么?谢谢。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main(){
char* a[5] = { "tomer","tomer","tomer","tomer","tomer" };
char t[] = "ppppr";
char* n = &t;
for (int i= 0;i < 3;i++) {
    scanf(" %s",n);
    a[i] = n;
}
for ( int j= 0;j < 3;j++) {
    printf("%s\n", a[j]);
}
system("pause");
return 0;

}

c arrays string pointers scanf
1个回答
0
投票

因为您只为新字符串分配一次内存,这是

char t[] = "ppppr";

顺便说一句,您的代码中还有其他问题。

  • 您从main返回0,但其返回类型为void而不是int
  • 您应该执行char* n = t;而不是&t
© www.soinside.com 2019 - 2024. All rights reserved.