gpt4 book ai didi

c - 指向整数的指针

转载 作者:行者123 更新时间:2023-11-30 14:22:43 24 4
gpt4 key购买 nike

我使用一个指向整数的指针作为 2 Dims 数组,我编写了这些代码,但未能获取整数值。

#include<stdio.h>
#include<conio.h>

void main(void)
{
int **pptr = 0, size = 0, size2 = 0, i, j;

clrscr();
printf("Enter Size of Main Store n");
scanf("%d", &size);

pptr = (int **) malloc(size * sizeof(int *));

printf("Enter Size of Sub Store n");
scanf("%d", &size2);

for (i = 0; i < size; i++) {
pptr[i] = (int *) malloc(size2 * sizeof(int));
}

printf("Enter Values n");

for (i = 0; i < size; i++) {
for (j = 0; j < size2; j++) {
scanf("%dn", pptr[i][j]);
}
}

clrscr();
printf(" Valuesn");

for (i = 0; i < size2; i++, pptr++) {
printf("%dn", *pptr + i);
}

getch();
}

它打印出垃圾!!

最佳答案

scanf("%d", arg) 需要一个指向 int 的指针,但是

for (i = 0; i < size; i++) {
for (j = 0; j < size2; j++) {
scanf("%dn", pptr[i][j]);
}
}

你向它传递一个int,一个未初始化的int。然后,该内存位置中的不确定值被解释为指针,并且扫描尝试将转换后的值存储在谁知道的位置。这不太可能会导致段错误。

您应该传递 &pptr[i][j] 作为参数。

for (i = 0; i < size2; i++, pptr++) {
printf("%dn", *pptr + i);
}

使用 %d 打印 int* *pptr +i,即 &pptr[0][i]需要 int 参数的 格式。

你应该

printf("%d\n", pptr[0][i]);

如果你想打印对角线的值(看起来就是这样,因为你还在循环中增加了 pptr),或者更好

for(i = 0; i < size && i < size2; ++i) {
printf("%d\n", pptr[i][i]);
}

或者,如果您想打印整个网格,

for(i = 0; i < size; ++i) {
for(j = 0; j < size2; ++j) {
printf("%d ", pptr[i][j]);
}
printf("\n");
}

关于c - 指向整数的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13577145/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com