关于c语言字符串指针和一般指针的疑问???
代码如下:1#include<stdio.h>23intmain(intargc,constchar*argv[])4{5inta=10;6int*p=&a;78char...
代码如下:
1 #include <stdio.h>
2
3 int main(int argc, const char *argv[])
4 {
5 int a = 10;
6 int *p = &a;
7
8 char str[] = "hello world!";
9 char *q = str;
10
11 printf(" *p = %d\n", *p); // 间接引用 用的是*p;
12 printf("q = %s\n", q); //为这个地方也是间接引用却是 q 为什么不是*q
13
14 return 0;
15 }
~ 展开
1 #include <stdio.h>
2
3 int main(int argc, const char *argv[])
4 {
5 int a = 10;
6 int *p = &a;
7
8 char str[] = "hello world!";
9 char *q = str;
10
11 printf(" *p = %d\n", *p); // 间接引用 用的是*p;
12 printf("q = %s\n", q); //为这个地方也是间接引用却是 q 为什么不是*q
13
14 return 0;
15 }
~ 展开
展开全部
如果你想打破砂锅问到底,最好去查看printf的定义。
p代表一个指针,传递的是地址信息
*p代表一个指针指向的值,传递的是变量信息
printf(" *p = %d\n", *p); 中你想要输出变量a的值,于是你需要给的参数是*p
printf("q = %s\n", q);中你想输出一整个字符串,而字符串是一连串的字符保存在一连串的内存中。
你可以想象,如果系统想输出一整个字符串,它需要知道什么信息?是不是需要知道这个字符串的首地址,然后根据字符串是连续内存来保存的,这样可以找到字符串的所有字符并输出。而你如果只用输出一个数字,参数当然不需要给地址(也就是指针),而需要指针指向的值(变量)就可以了。
至于printf函数怎么把以上实现的,你想明白就去查那个函数的定义吧。
p代表一个指针,传递的是地址信息
*p代表一个指针指向的值,传递的是变量信息
printf(" *p = %d\n", *p); 中你想要输出变量a的值,于是你需要给的参数是*p
printf("q = %s\n", q);中你想输出一整个字符串,而字符串是一连串的字符保存在一连串的内存中。
你可以想象,如果系统想输出一整个字符串,它需要知道什么信息?是不是需要知道这个字符串的首地址,然后根据字符串是连续内存来保存的,这样可以找到字符串的所有字符并输出。而你如果只用输出一个数字,参数当然不需要给地址(也就是指针),而需要指针指向的值(变量)就可以了。
至于printf函数怎么把以上实现的,你想明白就去查那个函数的定义吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-11-03
展开全部
str[]是个字符串数组,char *q = str; 即 *q指向的是一个字符串数组,而printf("q = %s\n", q);q=q[0]为首地址*q[0]指引的字符
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询