为什么C语言中有时候可以直接输出指针,得到的却不是地址 如下

2025-02-26 20:49:17
推荐回答(4个)
回答1:

首先要搞清楚char *p[],这是一个指针数组,即数组内的每个元素都是一个指针,指向一个char型的字符,那么p[i]就是这个指针,因为数组名也是地址,而strcpy的参数要求是数组或指针,而*p[i]是指针指向的字符,是具体的值,不是指针,也不是地址,举例来说
char *p[3]={"abc","def","ghi"};
for(i=0;i<3;i++)
printf("%s\n",p[i]);
输出结果为
abc
def
ghi
如果printf函数改为printf("%c\n",*p[i]);则输出结果为
a
d
g

回答2:

char *a = “asdf”;这时候s已经是一个字符串的首地址了,
等价于a[5];
printf(“%s”,a);这个时候要求输入的就是首地址,相当于puts(a);
同理strcpy是字符串拷贝函数,要求的参数为字符串首地址,*p[I]以及是一个具体的值了,不是指针类型的地址了。。。

回答3:

因为用函数 printf ()输出字符串时,要传入的就是字符串的指针;
函数strcpy()也是要传入是字符串的指针;

若想输出地址这样写:
printf("%d",a);

回答4:

如果将printf("u%",a);则输出的为初始地址。