我怎样才能避免得到 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.
此外,当您将 &
运算符应用于 *
运算符的结果时,它们会相互抵消。所以 &*pQuantity
与 pQuantity
.
完全相同
你可能想要的是这样的:
int *pQuantity,input =0;
pQuantity = &input;
printf("Enter number:");
scanf("%d",pQuantity);
*pQuantity = *pQuantity+1;
printf("%d\n",*pQuantity);
当我试图理解指针在 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.
此外,当您将 &
运算符应用于 *
运算符的结果时,它们会相互抵消。所以 &*pQuantity
与 pQuantity
.
你可能想要的是这样的:
int *pQuantity,input =0;
pQuantity = &input;
printf("Enter number:");
scanf("%d",pQuantity);
*pQuantity = *pQuantity+1;
printf("%d\n",*pQuantity);