我怎样才能避免得到 0 作为在 C 中添加指针的打印值

how can I avoid getting 0 as a print value for adding pointers in C

当我试图理解指针在 C 中的工作方式时,我编写了以下代码,它接受输入并将其加到一个,然后打印出来,但问题是我每次都得到 zero/null它打印输出,如何避免它打印空值?

#include <stdio.h>
#include <stdlib.h>

int main(){

    int **q_Quantity,*pQuantity,input =0;

    printf("Enter number:");
    scanf("%d",&*pQuantity); //takes input
    
    //pQuantity = (int *)malloc(*pQuantity+sizeof(int)*1);

    pQuantity = *&pQuantity+1;//gives a 0

    printf("%d\n",*pQuantity);
}

pQuantity 传递给 scanf 未初始化 ,因此其值为 不确定scanf 然后尝试取消引用该未初始化的指针以写入从用户读取的值。尝试读取和取消引用不确定的指针会调用 undefined behavior.

此外,当您将 & 运算符应用于 * 运算符的结果时,它们会相互抵消。所以 &*pQuantitypQuantity.

完全相同

你可能想要的是这样的:

int *pQuantity,input =0;
pQuantity = &input;

printf("Enter number:");
scanf("%d",pQuantity);

*pQuantity = *pQuantity+1;
printf("%d\n",*pQuantity);