c语言,函数里的指针问题?
发布网友
发布时间:2022-04-23 09:42
我来回答
共4个回答
热心网友
时间:2023-09-23 12:59
这个其实很好理解
只需要把%s,%c,%p放在一起看
首先%s是最常见的很好理解,就是告诉程序后面的变量是一个字符串,在C语言中也就是字符数组,类型是char*或者char[],换句话说,你告诉程序我会给你一个指针,你去读这个指针指向的值。
然后%c是告诉程序后面的变量是个字符,类型是char,差别已经很明显了,这时候你告诉程序我给你提供一个字符,你给我在%c处打印出来。然而你给的却是一个指针,那程序就直接把你给的指针指向的地址本身当成字符打印出来了。但是一个地址肯定不止一个字节,也就是说超过了char应该有的大小,这时候程序会直接忽略了超出大小的部分,只读第一个字节。
如果你同时使用%p,告诉程序,你会提供一个指针,直接把这个指针指向的地址给我打印出来。把输出的地址最后两位的16进制数查ascii表,换算成字符,你会发现,刚好就是前面%c打印出的字符。追问那如果在这个change函数里想给指针赋值应该怎么写代码?*ch=‘w’;这样写程序不执行。
热心网友
时间:2023-09-23 12:59
ch是个指针,要输出ch往后第i个位置的字符应该用ch[i]或者*(ch+i),而不是ch+i,你的代码都是错的。追问那如果在这个函数里想给指针赋值应该怎么写代码?*ch=‘w’;这样写程序不执行。
热心网友
时间:2023-09-23 13:00
%c应该用*(ch+数字)来输出 你直接用的ch指针 输出的是ch指针的最低一个字节的值
热心网友
时间:2023-09-23 13:01
C语言_071_指针的定义和使用_上