回复评论
- printf(“%s”,&a[3])表示什么?
char a[] = "Hello, world!";
printf("%s",&a[3]);//输出lo, world!
答案: printf(“%s”, &a[3]) 表示从数组 a 的第四个元素开始打印字符串。&a[3] 是数组 a 中第一个字符的地址,表示字符串的起始位置。
- (void)printf(“%s”,ModulePrm[cModuleIndex].ModuleName);如果是输出这种是不是字符串?
#include <stdio.h>
typedef struct {
char ModuleName[20]; // 字符串长度为 20
} Module;
int main() {
Module ModulePrm[3] = {
{"Module A"},
{"Module B"},
{"Module C"}
};
int cModuleIndex = 1; // 选择第二个模块(Module B)
(void)printf("%s\n", ModulePrm[cModuleIndex].ModuleName);//Module B
return 0;
}
答案: 是的,printf(“%s”, ModulePrm[cModuleIndex].ModuleName); 也是输出字符串。这里 ModulePrm[cModuleIndex].ModuleName 应该是一个指向字符数组(字符串)的指针,printf 会从这个指针指向的位置开始打印字符,直到遇到字符串结束符 \0
正文
//printf怎么输出?
//=>如何正确使用%s,%c,%d,%p
%d试例
/* include<stdio.h>
int main(void) {
int a[36] = { 1,2,3,4,5 };
printf(“%d”, *a);//=>一个 =>*a是值
return 0;
}=>输出1
*/
%c试例
/* #include<stdio.h>
int main(void) {
char op[20] = { “123” };
char*p = op;
printf(“%c”, *op);//=>一个 =>*op是值
return 0;
}=>输出1
*/
%s试例
/* #include<stdio.h>
int main(void) {
char op[20] = { “123” };
char*p = op;
//op是指针(地址),*op是值,p是指针,*p是值
printf(“%s”, op);//=>一串 =>op是指针(地址)或者printf(“%s”,p);=>p是指针
return 0;
}=>输出123
*/
总结:
//用printf输出的话,
//如果是用 %d 的话,符号这个[“”,]后面要写 值 ;=>一个整数=>一个就是值
//如果是用 %c 的话,符号这个[“”,]后面要写值;=>一个字符整数=>一个就是值
//如果是用 %s 的话,符号这个[“”,]后面要写地址=>一串字符串=>一串就是地址
> //即,单个就要放值,不少于一个(即一串)要放值
//究竟用printf输出,符号这个[“”,]后面是写值还是地址其实是就看要输出一串字符串,还是一个字符或整数
//补充:%p=>专门输入地址,用printf输出,符号这个[“”,]后面要写地址
printf与数组关系的使用
/* #include<stdio.h>
int main(void) {
int a[36] = { 1,2,3,4,5 };
printf(“%d”, a[0]);===>a[0]是值
return 0;
}//输出第一个元素的值1
*/
/* #include<stdio.h>
int main(void) {
int a[36] = { 1,2,3,4,5 };
printf(“%d”, a);====>a是地址
return 0;
}//出第一个元素的地址6487424
*/
/* #include<stdio.h>
int main(void) {
int a[36] = { 1,2,3,4,5 };
printf(“%d”, *a);====>*a是值
return 0;
}//输出第一个元素的值1
*/
由以上三个例子,我们看到,
对于同一个数组 int a[36] = { 1,2,3,4,5 };
a[0]代表的是第一个元素的值;
*a则代表的也是第一个元素的值;
而 a则代表的是第一个元素的地址;
由此,我们可以推出,
对一个数组,
int a[36] = { 1,2,3,4,5 };
a[i]表示值,即用printf输出时,是值;
*a[i]则表示地址,即用printf输出时,是地址;(当然还要额外定义一个指针,这里不要乱用,指针果然博大精深,还要在仔细地思考)
没写完,还在更新…