码迷,mamicode.com
首页 > 其他好文 > 详细

指针相关总结1

时间:2018-07-20 20:09:59      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:void   存储   main   分享图片   就会   错误   初始   等价   oid   

指针相关总结1

指针是数组的迭代器(指针就是迭代器).

0.字符串数组:

char a[3][25]= {"XUANXIU YUWEN ", "XUANXIU YUWEN", "FEIXUANXIU TIYU"};就行了 定义成二维数组存储时可以简单看作一排一个字符串数组,
char* a[10] = {"XUANXIU", "YUWEN", "XUANXIU", "SHUXUE", "FEIXUANXIU", "TIYU"};这样是定义了一个指针数组 指针元素分别指向每一个对应的字符串存储的首地址

 

1.C语言指针为什么可以指向字符串常量,却不可以指向整型常量 

char * c="hello";//等价于char * c; c="hello",这里比较特殊.字符串直接使用代表字符串首地址。
C/C++只可以用指针取字符串常量的地址,该类被认为是左值,而其他的字面值常量(literal constant),则被认为是右值,不允许取地址。
 
而对于int类型,你可以这样改就能用指针了:
int a=2int*p=&a;

 

2.字符串的引用方式:

用数组名和输出格式%s可以输出整个字符串.比如:
char str[] = "I love China";
printf("%s\n", str);//输出完整字符串
printf("%s\n", str + 2);//只输出love China,规定了起点。

 

类中也有这样的情况 

class A
{
public:
    A(int i, char *p) :ival(i), ptr(p) {};
 
    int ival;
    char *ptr;
};
void main()
{
    A a(9, "hello");
    cout << a.ival << a.ptr << endl;//这里a.ptr输出hello,即字符指针能直接输出它所指向的字符串。
    system("pause");
}

 

3.指针和int常量的用法

int a = 1;//指针指向变量单元,不能指向int常量,所以要有a来存储.
int *p = &a;//等价于int *p; p = &a;但绝不可以写作:int *p; *p = a;//这样出错,p需要p = &a这样的初始化。
*p = 2;//因为有之前的初始化,才可以这样做.
有一种编译时不报错,运行时报错的写法:
int *p = NULL;
*p = 2;
这符合c的语法,编译不报错,因为已经对p初始化了.但是空指针表明自己不再指向任何对象,(而非空指针是指向其他变量,比如变量a,对*p赋值就是改变a的值)再对*p赋值就会出现错误了.如下:
技术分享图片

指针相关总结1

标签:void   存储   main   分享图片   就会   错误   初始   等价   oid   

原文地址:https://www.cnblogs.com/Stephen-Qin/p/9343268.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!