一、字符串指针
字符串是一种特殊的char型数组,指向char类型数组的指针,就是字符串指针。与普通指针一样,字符串指针在使用前也必须定义。字符串与char数组的区别在于长度,字符会自动在尾部加上一个长度‘\0’,而char型数组的长度就是其字符的个数。字符串长度是字符个数+1。例:
#include<iostream>
using namespace std;
int main()
{
char str[]="hello world";
char *p=str;
cout<<str<<endl;
cout<<p<<endl;
cout<<*p<<endl;
system("pause");
}
二、char型指针数组
指针数组的元素是指针。与普通指针类似,指针数组在使用前也必须先赋值,否则可能指向没有意义的值,这是比较危险的。以char型指针数组为例。
int main()
{
char *p[5]={"abc","def","ghi","jkl","mno"};
for(int i=0;i<5;i++)
puts(p[i]);
system("pause");
}
对于int型数据,如下:
#include<iostream>
using namespace std;
int main()
{
int a=1,b=2,c=3;
int *p[]={&a,&b,&c};//不能写成int *p[]={1,2,3},这是不合法的。
for(int i=0;i<3;i++)
cout<<p[i]<<endl;//打印出地址(指针)
system("pause");
}
三、对比int型和char型数组的数组名和取地址
#include<iostream>
using namespace std;
int main()
{
int a[]={1,2,3};
char b[]={'a','b','c'};
cout<<a<<endl;
cout<<&a<<endl;
cout<<b<<endl;
cout<<&b<<endl;
system("pause");
}
更多详细信息请查看
java教程网 http://www.itchm.com/forum-59-1.html
分享到:
相关推荐
char *a[]定义了一个指针数组,注意不是char[], char[]是不能同时初始化为三个字符的,定义以后的a[]其实内部有三个内存位置,分别存储了abc\0,cde\0,fgh\0,三个字符串的起始地址,而这三个位置的内存地址却不是这三个...
指针数组为字符串排序,char* str[] = { "beijing","guangdong","shanghai" };进行排序,内涵冒泡排序和快速排序,原理:更改指针指向
详解C语言中Char型指针数组与字符数组的区别 1.char 类型的指针数组:每个元素都指向一个字符串,指向可以改变 char *name[3] = { abc, def, gbk }; for(int i = 0 ; i < strlen(name); i ++){ printf(%s\n,...
用字符串常量为字符指针初始化,其形式与字符数组的初始化类似,却有本质上的区别:字符数组获得字符串所有的字符,而字符指针获得字符串首地址,与字符串内的字符无关。 【例8.4】用指向字符串的指针变量完成两个...
分配一个与原字符串等长的字符数组; 反向拷贝一下即可。 char* reverseString(char* s) { //将q指向字符串最后一个字符 char* q = s ; while( *q ) { q++; } q -= 1 ; //分配空间,存储逆序后的字符串...
1、数组名是第一个元素的地址; 2、指针保存的是另一个对象的地址... 5、无法使用string对象初始化char指针,但是string类提供了一个名为c_str的成员函数,以实现此要求; 6、可以使用指向char数组的指针,构
指针数组定义:如果一个 数组,其元素均为指针型数据,该数组为指针数组,也就是说,指针数组中的每一个元素相当于一...使用指针数组中各元素分别指向若干个字符串,使字符串的处理更加灵活。 程序1.1 代码如下:#inclu
10.4.2 使用字符串指针变量与字符数组的区别 28 10.5 函数指针变量 29 10.6 指针型函数 30 10.7 指针数组和指向指针的指针 31 10.7.1 指针数组的概念 31 10.7.2 指向指针的指针 34 10.7.3 main函数的参数 36 10.8 ...
C语言中没有特定的字符串类型,我们通常是将字符串放在一个字符数组中,这在《C语言字符数组和字符串》中已经进行了详细讲解,这里不妨再来演示一下: #include int main(){ char str[] = ...
解决C/C++中char型变量的地址输出乱码的问题。为什么会出现这样现象,因为字符串是以空终止符('\0')结尾的字符数组,通过字符串中第一个字符的指针访问字符串。字符串的值是字符串中第一个字符的(常量)地址
该函数有两个字符数组的参数,函数的作用是:将第二个字符数组中的字符串连接到前面字符数组的字符串的后面。第二个字符数组被指定为const,以保证该数组中的内容不会在函数调用期间修改。连接后的字符串放在第一个...
3. 字符串常量:字符串在 C 语言中是由多个字符组成的字符数组,因此使用 `char` 关键字可以声明和表示字符串常量。例如:`char* str = "Hello";`,`str` 是指向字符串常量 "Hello" 的指针。 4. 字符型函数返回值:...
那么name是一个地址常量,值是一个字符串的首地址,注意它是常量,是不能四则运算的,所以这时候: printf(%s,name[20]);是不行的,name是常量,怎么能+20呢? 实现代码: #include #include #include #define
可将字符串 I am a boy 赋给数组c,下面正确的选项有( ) (分数:2分) A. c= I am a boy B. getchar(c) C. gets(c) D. scanf( %s ,c) E. for(i=0;i;i++) scanf( %c ,&c[i];c[10])='\0' 正确答案:CE 2、设有定义...
(关于空间的占用,如果要用一个和字符串a一样长的数组counter来计录a中各起点对应与b最大重合子字符串,这个数组也要和a一样长,空间上也不合适,除非情形很特殊,a短b长,不然不如直接malloc()一个堆空间来储存...
C++字符串与指针 在C++中可以用3种方法访问一个字符串(在第5章介绍了前两种方法)。 用字符数组存放一个字符串 【例】定义一个字符数组并初始化,然后输出其中的字符串。 #include using namespace std; int ...
⑴ 编写函数int FindNoVowel(char *str[],int num,char res[][20]),str指向的指针数组中保存若干单词字符串的首地址,num保存单词的个数,res指向的数组保存找到的符合条件的单词字符串,每行存放一个单词,要求将...
C语言中,二维数组的参数传递。 例如: char str[5][100]; 如果作为参数传递,内有详细示例。 三种传参示例供参考。
CString ,BSTR ,LPCTSTR之间关系和区别CString是一个动态TCHAR数组,BSTR是一种专有格式的字符串(需要用系统提供的函数来操纵,LPCTSTR只是一个常量的TCHAR指针。CString 是一个完全独立的类,动态的TCHAR数组,...