C语言的指针问题
已知'A'的ASCII码是65,并有语句”chars[]="ACEG",*p=s;”,则“printf("%c",*p+3);”的输出结果是()。A.EB.68C.GD....
已知'A'的ASCII码是
65,并有语句”char
s[]="ACEG",*p=s;”,则“printf("%c",*p+3);”的输出结果是(
)。
A.
E
B.
68
C.
G
D.
D
为什么答案是选D,我觉得应该选C啊,另外如果把*p+3 改成*p++(自加三次)是不是就选C了?如果是,能给讲一下二者区别吗?我实在是看不出来了。万分感谢~ 展开
65,并有语句”char
s[]="ACEG",*p=s;”,则“printf("%c",*p+3);”的输出结果是(
)。
A.
E
B.
68
C.
G
D.
D
为什么答案是选D,我觉得应该选C啊,另外如果把*p+3 改成*p++(自加三次)是不是就选C了?如果是,能给讲一下二者区别吗?我实在是看不出来了。万分感谢~ 展开
6个回答
展开全部
typedef struct StateStruct { void (*FuncPtr)( void * ptr ) f;}SS; //定义了一个新的类型,这个类型是个结构体,类型名是SS//下面声明一个SS类型的变量SS s;//s就是一个SS类型的变量void (*FuncPtr)( void * ptr );//是一个类型名,类型是FuncPtr,这是一个函数指针类型,这个函数指针类型是返回值是void,接受一个void*的指针地址的参数。//一般使用typedef语法来用typedef void (*FuncPtr)( void * ptr );typedef struct StateStruct { FuncPtr fp;}SS;承上
void f(void *ptr){}//函数f就是一个funcPtr类型的函数。//可以以下面的方法赋值:s.fp = f;
const SS St_StateInit = { (void (*)(void *))State_Init };//用下面的写法会好看很多const SS St_StateInit = { (FuncPtr)State_Init };//这是用State_Init来初始化fp的值。
void f(void *ptr){}//函数f就是一个funcPtr类型的函数。//可以以下面的方法赋值:s.fp = f;
const SS St_StateInit = { (void (*)(void *))State_Init };//用下面的写法会好看很多const SS St_StateInit = { (FuncPtr)State_Init };//这是用State_Init来初始化fp的值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
typedef struct StateStruct { void (*FuncPtr)( void * ptr ) f;}SS; //定义了一个新的类型,这个类型是个结构体,类型名是SS//下面声明一个SS类型的变量SS s;//s就是一个SS类型的变量void (*FuncPtr)( void * ptr );//是一个类型名,类型是FuncPtr,这是一个函数指针类型,这个函数指针类型是返回值是void,接受一个void*的指针地址的参数。//一般使用typedef语法来用typedef void (*FuncPtr)( void * ptr );typedef struct StateStruct { FuncPtr fp;}SS;承上
void f(void *ptr){}//函数f就是一个funcPtr类型的函数。//可以以下面的方法赋值:s.fp = f;
const SS St_StateInit = { (void (*)(void *))State_Init };//用下面的写法会好看很多const SS St_StateInit = { (FuncPtr)State_Init };//这是用State_Init来初始化fp的值。
void f(void *ptr){}//函数f就是一个funcPtr类型的函数。//可以以下面的方法赋值:s.fp = f;
const SS St_StateInit = { (void (*)(void *))State_Init };//用下面的写法会好看很多const SS St_StateInit = { (FuncPtr)State_Init };//这是用State_Init来初始化fp的值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是的。*p+3。是对p指向的那个值加3,p开始是指向A的,故A加3后就是D了;而p++执行3次的话,是指针p本身加3,p开始指向A,加3后指向G了。
追问
能再深入一点儿吗,我刚开始学C,谢谢了
追答
已经说的比较清楚了啊,还有哪不明白
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
typedef struct StateStruct { void (*FuncPtr)( void * ptr ) f;}SS; //定义了一个新的类型,这个类型是个结构体,类型名是SS//下面声明一个SS类型的变量SS s;//s就是一个SS类型的变量void (*FuncPtr)( void * ptr );//是一个类型名,类型是FuncPtr,这是一个函数指针类型,这个函数指针类型是返回值是void,接受一个void*的指针地址的参数。//一般使用typedef语法来用typedef void (*FuncPtr)( void * ptr );typedef struct StateStruct { FuncPtr fp;}SS;承上
void f(void *ptr){}//函数f就是一个funcPtr类型的函数。//可以以下面的方法赋值:s.fp = f;
const SS St_StateInit = { (void (*)(void *))State_Init };//用下面的写法会好看很多const SS St_StateInit = { (FuncPtr)State_Init };//这是用State_Init来初始化fp的值。
是否可以解决您的问题?
void f(void *ptr){}//函数f就是一个funcPtr类型的函数。//可以以下面的方法赋值:s.fp = f;
const SS St_StateInit = { (void (*)(void *))State_Init };//用下面的写法会好看很多const SS St_StateInit = { (FuncPtr)State_Init };//这是用State_Init来初始化fp的值。
是否可以解决您的问题?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
printf("%c",*p+3);
分布来看,%c是要打印输出一个字符。
p指向那个字符数组,*p就是字符 A
那么 A+3是多少呢,A+1是B +2 是C +3 是D
注意是 *p + 3 而不是 *(p+3) 这是由区别的。
分布来看,%c是要打印输出一个字符。
p指向那个字符数组,*p就是字符 A
那么 A+3是多少呢,A+1是B +2 是C +3 是D
注意是 *p + 3 而不是 *(p+3) 这是由区别的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询