c - 为什么代码只打印指向字符串的指针数组中最后一个指针的值?
问题描述
这是我的代码
#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;
}
输出数组中最后一个值的三倍的原因是什么?
解决方案
因为您只为新字符串分配内存一次,即
char t[] = "ppppr";
顺便说一句,您的代码中还有其他问题。
- 你从 main 返回 0 但它的返回类型是 void 而不是 int
- 你不应该
char* n = t;
&t
推荐阅读
- angular-material - Angular 6 - 基于单选按钮部分显示表单组件
- hyperledger-fabric - 分布式账本将存储在超级账本作曲家和结构中的位置
- hyperledger-composer - 如何在 Hyperledger-composer 中查询相似词?
- r - 如果语句给了我几个警告它们是什么意思?
- javascript - 尝试实现实时 querySelectorAll
- python - Python:接受列表和分隔符并返回字符串的函数
- android - Android垂直进度条
- ionic-framework - Ionic 3 图像在不运行 livereload 的情况下保存时损坏
- python - 在 python 中编写 AES-CTR 解密例程
- ajax - 无法在 ExtJS 6 中发出 CORS 请求