想问问这个该怎么改?
#include<stdio.h>int main()
{ long double atoms=("35473 11825 1 -0.8476 8.663546789038294 15.898504696069216 9.592882300061233 0 0 0","587870 18076 3 2 10.5800345647899458 17.167260923545656768799038 9.24859747003637 0 0 0","13711 4571 1 -0.8476 12.38993400496225 15.7343547658895299 9.308990371654799 0 0 1");
long double *p;
p=atoms;
p=atoms;
printf("p=%ld",*(p+12));
return 0;
}
说是无效初始化,还有赋值类型不兼容 首先,你需要知道数组的初始化语法和指针赋值的方式。以下是修改后的代码:
#include<stdio.h>
int main() {
long double atoms = {
{35473, 11825, 1, -0.8476, 8.663546789038294, 15.898504696069216, 9.592882300061233, 0, 0},
{587870, 18076, 3, 2, 10.5800345647899458, 17.167260923545656768799038, 9.24859747003637, 0, 0},
{13711, 4571, 1, -0.8476, 12.38993400496225, 15.7343547658895299, 9.308990371654799, 0, 0}
};
long double (*p);
p = atoms;
printf("p=%Lf", *(*(p+0)+12));
return 0;
}
修改点如下:
[*]修复数组初始化语法。数组应该使用大括号 {} 来初始化,而不是使用双引号。
[*]将数组大小从 改为 。根据提供的数据,数组的大小应为 3 行 9 列。
[*]修改指针类型。将 long double *p 更改为 long double (*p)。因为你要让 p 指向二维数组,所以需要将其类型修改为指向大小为9的一维数组的指针。
[*]删除 p=atoms; 这行代码,因为类型不匹配。atoms 是一个 long double 类型的值,而不是一个指针。我们已经在 p = atoms; 这行代码中正确设置了 p 的值。
[*]修改 printf 语句中的格式说明符。将 %ld 改为 %Lf,因为你要打印的是 long double 类型的值,而不是 long 类型的值。
页:
[1]