当前位置:首页 » 编程语言 » c语言字节打印指针
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言字节打印指针

发布时间: 2022-09-27 04:14:15

‘壹’ 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!=''){

putchar(*str);

str++;

}

}

char*str="test";

myPuts(str);

(3)c语言字节打印指针扩展阅读:

C++指针与字符串

1、C语言里没有字符串数据类型,要想获得字符串的表示形式利用字符数组

#include<iostream>

using namespace std;

#include<stdlib.h>

void main()

{

char ar[]={'a','b','c','d'};

cout<<ar; //字符串后无结束符,会有多余打印

cout<<endl;

char br[]={'a','b','c','d',''};

cout<<br;

cout<<endl;

char cr[5]="abcd"; //字符串结尾默认隐藏了

cout<<cr;

system("PAUSE");

}

2、C语言里没有字符串数据类型,要想获得字符串的表示形式利用字符指针

#include<iostream>

using namespace std;

#include<stdlib.h>

void main()

{

char *p="hello world";

cout<<p;

//整形的指针,打印指针时只能打印其内部地址

//字符指针,打印指针时也是地址,但是这个被看作字符指针后,会打印该指针指向地址内存放的字符串,打印直到遇到为止

system("PAUSE");

}

3、静态常量区的字符串存储及指针访问

#include<iostream>

using namespace std;

#include<stdlib.h>

#include<string.h>

void main()

{

char *p="hello world"; //hello world存放在内存的静态常量区

//指针变量p存储的是该静态常量区的首个字符地址

//不能通过指针修改静态常量区的字符,但是可以通过指针访问

int length=strlen(p);

//strlen计算的是字符串p的有效长度,不算

for(int i=0;i<length;++i)

{

cout<<p[i];

}

system("PAUSE");

}

‘肆’ c语言,函数里的指针问题

这个其实很好理解
只需要把%s,%c,%p放在一起看
首先%s是最常见的很好理解,就是告诉程序后面的变量是一个字符串,在C语言中也就是字符数组,类型是char*或者char[],换句话说,你告诉程序我会给你一个指针,你去读这个指针指向的值。
然后%c是告诉程序后面的变量是个字符,类型是char,差别已经很明显了,这时候你告诉程序我给你提供一个字符,你给我在%c处打印出来。然而你给的却是一个指针,那程序就直接把你给的指针指向的地址本身当成字符打印出来了。但是一个地址肯定不止一个字节,也就是说超过了char应该有的大小,这时候程序会直接忽略了超出大小的部分,只读第一个字节。
如果你同时使用%p,告诉程序,你会提供一个指针,直接把这个指针指向的地址给我打印出来。把输出的地址最后两位的16进制数查ascii表,换算成字符,你会发现,刚好就是前面%c打印出的字符。

‘伍’ C语言打印输出指针数组

指针传递的实质就是传递首地址,要取地址里面的数据就要叫*或者直接指定加[m],比如*argv,和argv[0]意思都是一样的。

‘陆’ C语言输出指针

强转为(void*),用十六进制输出来

‘柒’ C语言中如何输出字节数

a)putchar函数:将指定的(表达式的值所对应的)字符输出到标准输出终端(屏幕)上。

格式:int putchar( int c );

例如:putchar(‘a’+3);打印的结果是d,是一个字符而不是数值。

a的ASCII码是97,加3是ASCII码表中100对应的字符就是d。

例如:putchar(99);打印的结果是c,代入一个数字打印出的是一个字符。

就如同代入的是学号,打印出来的是姓名一样。

b)putc函数:将指定的字符输出到指定标准输出流(屏幕或一个文件)中。

格式:int putc( int c, FILE *stream );

c)等价关系:putc的功能中包含putchar的功能。

putchar(c)等价于putc(c,stdout)。

例如:putc(‘A’,stdout)等价于putchar(‘A’)

(7)c语言字节打印指针扩展阅读

C语言的字符对齐

1、数据类型自身的对齐值:对于char型数据,其自身对齐值为1,对于short型为2,对于int,float,double类型,其自身对齐值为4,单位字节。

2、复杂类型(如联合,结构体或者类)的自身对齐值:其成员中自身对齐值最大的那个值。

3、指定对齐值:#pragma pack (value)时的指定对齐值value。

4、数据成员、复杂类型(如联合,结构体或类)的有效对齐值:自身对齐值和指定对齐值中小的那个值。

‘捌’ c语言 如何打印指针自己的内存地址,而不是存放的地址

如果是a的地址
printf("%08X\n",p);
其实p就是一个int类型的数据,这里我只是把它当做16进制输出
printf("%d",p);
也是可以的..
不然就跟楼上一样输出

‘玖’ 关于C语言printf输出字符型指针变量的问题

%s指定了格式,函数用字符串指针的格式来理解str
如果只要输出地址值,用%d,是按照整型格式来理解str
多说一点,如果用%d来解析浮点类的,是得不到浮点值的,因为格式理解错误,并且不会去进行隐式类型转换,需要用%f,或者显示的进行转换.