为什么以下代码scanf_s在输入要放入结构的数字后到达第二个时抛出异常.
这绝不代表完整的链表实现.
scanf_s输入值后,不确定如何进入下一个?有任何想法吗?
编辑:更新后的代码与建议的解决方案,但仍获得了AccessViolationException第一之后scanf_s
码:
struct node
{
char name[20];
int age;
float height;
node *nxt;
};
int FillInLinkedList(node* temp)
{
int result;
temp = new node;
printf("Please enter name of the person");
result = scanf_s("%s", temp->name);
printf("Please enter persons age");
result = scanf_s("%d", &temp->age); // Exception here...
printf("Please enter persons height");
result = scanf_s("%f", &temp->height);
temp->nxt = NULL;
if (result >0)
return 1;
else return 0;
}
// calling code
int main(array<System::String ^> …Run Code Online (Sandbox Code Playgroud) 我是C编程语言的初学者.我在书上看到了一个代码:
#include<stdio.h>
int main(){
int * * k, *a, b=100;
a = &b;
k = &a;
printf("%d\n",* * k);
}
Run Code Online (Sandbox Code Playgroud)
我不知道的意思int * *k.这是整数指针还是值?它会指向什么?它包含什么/存储?这个变量有什么用?我怎么能理解这个表达方式?
char**在ac程序中是什么意思,有人可以给出正确的解释吗?我正在查看与函数指针相关的排序指针,它有点令人困惑。
int compare(const void* a,const void* b)
{
char** sa=(char**)a;
char** sb=(char**)b;
return strcmp(*sa,*sb);
}
Run Code Online (Sandbox Code Playgroud) 我正在开发一个非常基本的程序,我希望将一个长度为2的整数数组返回到我的主程序块.我不能让它工作,我被告知我可能需要指针来做这件事.指针如何工作,我如何在我的程序中使用它?这是我目前的代码:
int[] return2();
int main() {
int a[2];
a = request();
printf("%d%d\n", a[0], a[1]);
return(0);
}
int[] request ()
{
int a[2];
a[0] = -1;
a[1] = 8;
return a;
}
Run Code Online (Sandbox Code Playgroud) 我不得不打印一个指针的值:
int *p = 0;
printf("%d", *p);
Run Code Online (Sandbox Code Playgroud)
上面的代码抛出异常。
所以我尝试了printf("%d", p),并且奏效了。
为什么它只在没有*?
有一个简单的C程序。
#include<stdio.h>
int main()
{
char *s = "abcde";
printf("%s\n", s);
printf("%s\n", *s); /* This is wrong */
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是我的想法:
变量s是char *指向字符串的指针abcde。所以变量s是一个内存地址,而内存地址存储的是字符串abced。
%s函数中的格式字符串正在printf()格式化字符串。我不知道为什么s是字符串。该变量s是一个char *指针,并且*s是 的字符串abcde,不是吗?