|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
请问下,指针的格式化输出中,到底什么情况下带*,什么时候不带。比如这里输出数组里面的各个字符串,为什么不带*
- #include <stdio.h>
- #define MAX 4
- int main()
- {
- char* names[] = {
- "one",
- "two",
- "three",
- "four"
- };
-
- int i = 0;
- for (i = 0; i < 4; i++)
- {
- printf("%s\n", names[i]);
- }
-
- return 0;
- }
复制代码
本帖最后由 一点点儿 于 2022-8-9 15:34 编辑
指针变量的定义形式如:数据类型 *指针名,
在楼主的代码中就是
- char* names[] = {
- "one",
- "two",
- "three",
- "four"
- };
复制代码
上面代码定义指针数组names,用各字符串对它进行初始化(即把各字符串中的第1个字符的地址赋给指针数组的各个元素),指针数组指向字符串
字符串指针的指针名输出字符串内容而不是地址,
字符串指针的指针名代表字符串的首地址,但输出字符串指针名时输出的却是完整字符串,
如楼主代码中的
因为在C语言中,在遇到字符型指针时会将其当作字符串名来处理,输出指针所指的字符串
所以这里输出数组里面的各个字符串,不带*
指针运算符*(间接寻址符):与&为逆运算,作用是通过操作对象的地址,获取存储的内容。例:x = &i,x 为 i 的地址,*x 则为通过 i 的地址,获取 i 的内容。
带*是为了获取指针指向的内容,一般情况下输出指针指向的内容是要带*的
|
|