问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c语言中如何借用指针输出字符串?

发布网友 发布时间:2022-04-23 05:28

我来回答

5个回答

热心网友 时间:2023-07-06 12:09

使用指针输出字符串有以下几种方式:

1、使用printf 函数进行输出,其使用的格式转换符为%s,如 

char *str = "test";//指针指向一个字符串

printf ("%s\n", str);//输出str指向的字符串

2、使用puts函数进行输出,如

char *str = "test";

puts(str);//输出str指向的字符串,会自动多输出一个换行

3、使用自定义函数进行输出,如

void myPuts(char *str)//自定义输出函数

{

if (!str)return ;

while (*str != '\0'){

putchar(*str);

str++;

}

char *str = "test";

myPuts(str);

扩展资料:

C++指针与字符串

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

#include<iostream>

using namespace std;

#include<stdlib.h>

void main()

{

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

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

cout<<endl;

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

cout<<br;

cout<<endl;

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

cout<<cr;

system("PAUSE");

}

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

#include<iostream>

using namespace std;

#include<stdlib.h>

void main()

{

char *p="hello world";

cout<<p;   

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

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

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的有效长度,不算\0

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

{

cout<<p[i];

}

system("PAUSE");

}

热心网友 时间:2023-07-06 12:10

1.*首先是一个算术运算符;

2. 定义一个指针,比方说下面的定义语句:

int a;

定义了一个变量a,其数据类型是int;

再看下面的定义语句:

int *b;

定义了一个int * 变量,怎样理解int*呢?可以这么来:

*b是int型的,它对应一个存储单元,里面可以存放int型数据,而这个单元的地址就存放在b中,此时b就是一个int *的数据. 于是,可以执行下面的操作

a=*b;

但是反过来这样操作就是错误的

b=a;

要用一个int型的变量给int *的变量赋值,则必须使用

b=&a;

讲到这,具有指针类型的形式参数的函数调用方法也就清楚了.

扩展资料:

*p=a的意思是将首元素的地址赋值给指针变量,在声明的时候完成了赋值。

由以上可以看出,p=&a[0],p=a,*p=a 三者的含义是一致的。

数组名a代表的就是数组地址,所以p=&a[0],p=a,二者是等价的。

声明时赋初值:

int *p=&a[0] 和 int *p=a是一致的。

通过指针引用数组元素时:a[1]=*(p+1)。

必须要注意的是:

a:数组首元素的地址(每个元素都是int类型)。

a+2:数组的第3个元素的地址。

* (a+2):数组的第3个元素的地址。

参考资料:百度百科-c语言字符串



热心网友 时间:2023-07-06 12:10

一、字符指针

1、字符指针输出字符串

为了更好的理解这部分内容,我们先看一个例子:

#include <stdio.h>int main()


{    char *ps ;


ps = "C language!";     /*定义字符指针*/


printf("%s\n", ps);  /*用字符指针PS来输出字符串的内容*/


return 0;

运行结果为: 

这个列子中,字符串“C language!”, 存储在连续的无名存储区中,通过语句ps = "C language!, 将无名储存区的首地址赋给指针ps,也就是说,指针变量ps 指向无名储存区域的首地址,而不是把无名储存区域的内容保存在ps中,

2、字符指针处理字符串

还是从具体的列子出发:

#include <stdio.h>

int main() 

{    

char *ps = "C language!";    

int n = 2;

ps = ps+2;      /*移动指针ps*/      

printf("%s\n", ps);    

return 0;   


}

运行结果: 

这里初始化的时候把首地址赋给了ps , 后面操作ps= ps+2时,ps指向l 所在的空间。

3、字符数组与字符指针处理字符串有何不同

占用空间不同。数组所占空间取决于数组的长度,而指针只占用4字节,用以存放字符串的首地址。

赋值方式不同指针本身是变量,所以可以这样char *ps; ps = "C language!"; 赋值, 而数组不能这样char A[20];A = "C language!;赋值,而要逐个赋值。

二、指针数组

注意不要写成int (*p)[3]; 这是上一篇说的指向数组的指针变量,表示长度为3的指向一维数组的指针变量。

1、指针数组比较适合于用来指向若干个字符串,是字符串处理更加灵活方便。

2、比如图书馆有若干本书,要将这些书名存在一个数组中,一般的方法用二维数组来存,就得定义该字符数组的列数为最长书名的长度,这样就非常浪费空间。

3、用指针数组则可以让指针数组中的各个元素,指向各字符串(书名),这样排序时,不必改动字符串的位置,而是改动指针数组中个元素的指向。

4、这样,各字符串的元素可以不同,而且移动指针变量的值(地址),就比移动字符串所花的时间少得多。

运行结果: 


这段算法,后面部分与一般的数组差不多,但其效率却比较高。

热心网友 时间:2023-07-06 12:11

可以直接用字符型指针指向一个字符串常量。

为了更好的理解这部分内容,我们先看一个例子:

#include <stdio.h>int main()


{    char *ps ;


ps = "C language!";     /*定义字符指针*/


printf("%s\n", ps);  /*用字符指针PS来输出字符串的内容*/ 


return 0;


}

运行结果为:

这个列子中,字符串“C language!”, 存储在连续的无名存储区中,通过语句ps = "C language!, 将无名储存区的首地址赋给指针ps,也就是说,指针变量ps 指向无名储存区域的首地址,而不是把无名储存区域的内容保存在ps中,

代码截图:

参考资料:百度百科-网页链接

扩展资料:

在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。[1] 在高级语言中,指针有效地取代了在低级语言,如汇编语言与机器码,直接使用通用暂存器的地方,但它可能只适用于合法地址之中。指针参考了存储器中某个地址,通过被称为反参考指针的动作,可以取出在那个地址中存储的值。作个比喻,假设将电脑存储器当成一本书,一张内容记录了某个页码加上行号的便利贴,可以被当成是一个指向特定页面的指针;根据便利粘贴面的页码与行号,翻到那个页面,把那个页面的那一行文字读出来,就相当于是对这个指针进行反参考的动作。[2] 

在信息工程中指针是一个用来指示一个内存地址的计算机语言的变量或*处理器(CPU)中寄存器(Register)【用来指向该内存地址所对应的变量或数组】。指针一般出现在比较接近机器语言的语言,如汇编语言或C语言。面向对象的语言如Java一般避免用指针。指针一般指向一个函数或一个变量。在使用一个指针时,一个程序既可以直接使用这个指针所储存的内存地址,又可以使用这个地址里储存的函数的值。

热心网友 时间:2023-07-06 12:11

举个例子,下图代码.

#include <stdio.h>

int main()
{    char *ps ;
ps = "C language!";     /*定义字符指针*/
printf("%s\n", ps);  /*用字符指针PS来输出字符串的内容*/
return 0;
}

输出为 "C language"

这个列子中,字符串“C language!”, 存储在连续的无名存储区中,通过语句ps = "C language!, 将无名储存区的首地址赋给指针ps,也就是说,指针变量ps 指向无名储存区域的首地址,而不是把无名储存区域的内容保存在ps中,

#include <stdio.h>

int main()
{    char *ps = "C language!";   

int n = 2;

ps = ps+2;      /*移动指针ps*/
printf("%s\n", ps);  

return 0;  
}

这段代码输出结果为 language  

这里初始化的时候把首地址赋给了ps , 后面操作ps= ps+2时,ps指向l 所在的空间。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何理解“时间就是空间,空间就是时间”? 办公室副主任竞聘演讲稿范文 学校办公室主任竞聘演讲稿范文 最新办公室主任竞聘演讲稿 办公室主任竞聘演讲稿优秀范文 ...堆墨现象,墨线 接地和粘度都正常,请问应如何解决 ...都正常了开始喷印结果喷一条墨线好恐怖怎么解决呀各位老师 威力喷码机 求一份学生会演讲词 大学学生会个人优秀演讲稿 梦到周围都是仙气是什么意思? c语言字符输出? 榛子仁酥的做法,榛子仁酥怎么做好吃,榛子仁酥 C语言中,如何以&quot;整数&quot;方式和&quot;字符&quot;方式输出字符? 睡觉总是梦见周围好像有蛇在动 梦见自己周围有好几只狼 华为手机怎样设置锁屏后的快捷手电筒? 怎么输出字符串 晚上梦见自己的周围都是蛇预示着什么? 梦见周围树一切都有雪 C语言怎么用printf输出字符串。 梦见周围全都是死人,这说明啥? 孩子很喜欢吃榛子,如何用榛子制作各种美食呢? C语言中,输出字符的格式是什么? hinova9锁屏电筒怎么关 做梦梦见周围的场景一直在转圈。这是怎么回事? 自己在家怎么炒榛子仁 榛子仁的做法大全 做梦梦见周围的楼房接二连三爆炸了是怎么回事? 华为mate30pro手电筒快捷键? 榛子怎么做好? 周公解梦之梦见周围三面是镜子 怎样输出字符 做梦梦到自己周围全是水! c+q中如何输出字符? 梦见周围环境改变大预示着什么? c语言中怎么输出字符串中的某个字符 怎样将榛子炒熟? 白天梦见周围都是大类 怎么用printf输出一个字符 c语言字符输出 c语言字符串怎么输出文字 C++怎么输出字符? C语言printf函数中,%C和%s都可以输出字符串? 怎么定义一个字符串,并输入,输出。 ps调色技巧:PS怎么快速给图片调色 c++怎么用cout输出字符串 用ps做完效果图怎么调色相平衡 ps的调色原理 处理图片时,怎样调出柔和的色彩? Ps的调色思路是怎么样的,是先调整对比度再提亮还是怎么样,这个有高人...