这是我的代码
#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;
}
这是输出数组最后一个vlaue的三倍的原因是什么?
最佳答案
因为您只为一次新字符串分配内存,所以
char t[] = "ppppr";
顺便说一句,您的代码中还有其他问题。
您从main返回0,但其返回类型为void而不是
整型
你应该做
char* n = t;
而不是&t