‘壹’ c语言指针输出数据问题
这就是规则,格式符%s的含义就是:把对应的值看做一个地址,按字节读取,然后输出读取到的值所对应的ASCII码,直到碰到0为止
p1是个地址,假设p1的值是1000(也就是数组a的起始地址),那么从1000开始依次读取到HIKARI\0 然后输出
如果是*p1 那么*p1是'H','H'的ASCII值是72, 那么printf("%s",*p1); 就是从地址72开始读取,也就是printf("%s",72); 而地址72是不允许用户程序操作的,会出错。
再举个例子:
int a = 4407873;
printf("%s", &a);
会输出ABC 因为变量a内存空间的值按字节看就是'A','B','C','\0'
‘贰’ c语言指针输出地址,内容和字节数
#include<stdio.h>
void main() { int a,*p;
p=&a; a=5;
printf("指针地址:%x\n",p);
printf("指针指向内容:%d\n",*p);
printf("指针变量字节数:%d\n",sizeof(p));
}
‘叁’ c语言中如何借用指针输出字符串
使用指针输出字符串有以下几种方式:
1、使用printf 函数进行输出,其使用的格式转换符为%s,如
char*str="test";//指针指向一个字符串
printf("%s ",str);//输出str指向的字符串
2、使用puts函数进行输出,如
char*str="test";
puts(str);//输出str指向的字符串,会自动多输出一个换行
3、使用自定义函数进行输出,如
voidmyPuts(char*str)//自定义输出函数
{
if(!str)return;
while(*str!='