关于c语言的几个问题

一、
int strtoint(char s[])
{
int i,n,sign;
for(i=0;s[i]==" ";i++);
sign=(s[i]=="-")?-1:1; /*这句什么意思*/
if(s[i]=='+'||s[i]=='-')
i++;
 ……
二、建立一个链表
main()
{
ctruct node
{
char ch;
struct node *next;
}*first,*last,*p; /*这里的first、last、p是结构指针?*/
……
三、插入节点作链表首节点
void inse(struct node **first,struct node *pnode)
{
pnode->next=*first;
*first=pnode; /*第一句不是就够了吗,为什么还要这句*/
}
调用时inse(&first,pnode);
三、中**first不是指向原首节点first地址的指针么?不是pnode->next=first;就行了?

pnode->next=*first岂不是吧原首节点(这个结构)的内容赋给指针?

说明结构也可以
ctruct node
{
char ch;
struct node *next;
}first,last,p;
这样吧

一、表达式1?表达式2:表达式;是一个三目运算符,运算顺序是先计算表达式1,若它的值为非0(真),将表达式2的值作为条件表达式的值;否则把表达式3的值作为条件表达式的值。你题目中
sign=(s[i]=="-")?-1:1; 的意思是若s[i]等于-,则sign=-1,否则sign=1;
二、这是创建结构指针的一种方法(漏了s吧,是struct),直接写在后面,当然也可以struct node *first,*last,*p;
三、*first=pnode是调整*first所指向的位置,从指向原先的首位置改为指向插入的节点所在位置。追问

三、中**first不是指向原首节点first地址的指针么?不是pnode->next=first;就行了?

pnode->next=*first岂不是吧原首节点(这个结构)的内容赋给指针?

追答

**first是指向*first这个指针的指针,*first是指向原首节点地址的指针(就跟*pnode同级的感觉,所以pnode->next指向的应该是*first,first单独看没有实际意义),pnode->next=*first不是把内容赋给指针,而是指pnode的next指向*first指向的节点(头节点)

 

 

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-12-01
第一个问题: sigh=(s[i]=="-")?-1:1 是个判断语句 当s[i]=="-" sigh=1 如果不等于 去-1
第二个问题: 是结构指针 而且你打错了, 是struct node 不是ctruct node
第三个问题: 第一句只是说 pnode的下一位是*一个叫first的指针,而没有把pnode与链表链接起来
第二句就是把pnode连接到链表上追问

谢谢

一个C语言问题?
2、extern是全局变量:在C语言下默认的全局变量前都隐藏的加了该关键字,只是我们平常看到的没有这个extern关键字而已。问题8:什么是全局变量和局部变量?1、全局变量:对全局变量直接修改会失败,通过间接修改也会失败,因为全局变量是放在常量区,受到了保护;2、局部变量:对局部变量直接修改也会失败,...

关于2级C语言的几个问题(详细解答一下,谢谢!)
(1)选A char x='A'; 是定义一个变量x并赋值为字符A x=(x>'A'&&x<='Z')?(x+32):x; 这是个选择语句,括号里的x>'A'&&x<='Z'表示条件,意思就是在A到Z之间的字母,也就是所有大写字母,因为是 >'A'不是>=‘A',所以不包括A,当条件满足时就执行x=x+32,大写字母 +32就...

C语言编程最常见的15个错误
C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。以下是关于C语言编程最常见的15个错误,希望大家认真阅读!1.书写标识符时,忽略了大小写字母的区别。main(){ int a=5;printf("%d",A); } 编译程序把a和A认为是两个不同的变量名,而显示出错信息。C认为大写字母...

学习C语言应注意哪些方面?其重点和难点是哪些?
第一个难点 C语言的数据类型 关于C语言数据类型,不难理解但难于运用。这就要求同学们在学习的时候记住常用的一些数据类型的特征(第一次作业第2题内容)。 第二个难点 C语言的运算符和运算顺序 1.C语言的运算功能十分丰富,运算种类远多于其它程序设计语言。大家在学习的时候不仅要注意某些运算符的运...

一些C语言的问题,很紧急,非常感谢您能回答!!!
C)C语言的可移植性较差 D)C语言是一种结构式模块化程序设计语言 2.下列叙述中正确的是 A 。A) C语言程序总是从main函数开始执行 B) C语言程序总是从第一个定义的函数开始执行 C) C程序的执行从main函数开始,所以main函数必须放在程序最前面 D) 每个函数执行时,按函数体中语句的先...

关于C语言学习过程中的迷惑
3、开发一个有商业价值的应用程序的流程,首先建立在对工具(即vc和c语言)都熟悉的基础上,才可以谈的概念,需要首先进行需求调研,然后构架系统,再详细编码,最后测试发布;4、看你是哪方面的开发了,vc可以开发程序,但不是唯一的;5、先看看c语言基础吧,包括c++,谭浩强的教材就可以,然后看看《...

c语言的几个问题
1、输出应该是-3。因为后++是在表达式运算后再++。2、外循环是3次。第1次外循环时,内循环3次;第2次外循环时,内循环2次;第3次外循环时,内循环2次。故总共输出6个 3、前++是先增加再使用,后++是使用后再++ 4、当下标i等于3时,c[i]='\\0',此时do-while循环退出,且i++,i=4。

~有些关于C语言的问题
~有些关于C语言的问题 1、以下选项中属于C语言的数据类型是( )。A. 复合型 B. 双精度型 C. 逻辑型 D. 集合型 B正确 2、以下说法中正确的是( )。A. C语言程序总是从第一个的函数开始执行 B. 在C语言程序中,要调用的函数必须在main()函数中定义 C. C语言程序总是从main()函数...

C语言4个简单问题不懂 求解
那么就把一个if-else拆成多个语句了。if () {语句1} else {语句2} 与 if () {语句1} {语句2}的区别是:前者是一个语句,即语句1和语句2有且仅有一个执行;后者是两个语句,即语句2是必然执行的,它不属于if-else,你可以把它的花括号去掉。有什么问题可以再发消息。望采纳。

问几道关于C语言合法字符和数字的问题
1、D \\n是转义字符,表示换行 2、C -10不是八进制或十六进制;0开头的是八进制,数值范围是0~7,所以0abc是错的;0a12同理 3、D、0开头的是八进制,数值范围是0~7,所以0f是错的;-2.5不是1~3位的整数,所以3.9E-2.5是错的,0开头的是八进制,数值范围是0~7,所以0a是错的...

相似回答