|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include<stdio.h>
- int main()
- { long double atoms[3][82]=("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[0][0];
- printf("p=%ld",*(p+12));
- return 0;
- }
复制代码
说是无效初始化,还有赋值类型不兼容
首先,你需要知道数组的初始化语法和指针赋值的方式。以下是修改后的代码:
- #include<stdio.h>
- int main() {
- long double atoms[3][9] = {
- {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)[9];
- p = atoms;
- printf("p=%Lf", *(*(p+0)+12));
- return 0;
- }
复制代码
修改点如下:
- 修复数组初始化语法。数组应该使用大括号 {} 来初始化,而不是使用双引号。
- 将数组大小从 [3][82] 改为 [3][9]。根据提供的数据,数组的大小应为 3 行 9 列。
- 修改指针类型。将 long double *p 更改为 long double (*p)[9]。因为你要让 p 指向二维数组,所以需要将其类型修改为指向大小为9的一维数组的指针。
- 删除 p=atoms[0][0]; 这行代码,因为类型不匹配。atoms[0][0] 是一个 long double 类型的值,而不是一个指针。我们已经在 p = atoms; 这行代码中正确设置了 p 的值。
- 修改 printf 语句中的格式说明符。将 %ld 改为 %Lf,因为你要打印的是 long double 类型的值,而不是 long 类型的值。
|
|