指针相关总结1

指针相关总结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=2;
int*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赋值就会出现错误了.如下:

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

时间: 2024-10-07 07:06:19

指针相关总结1的相关文章

《C++ Primer》学习 之 函数指针相关用法

/* 函数指针相关用法*/ 1 #define _CRT_SECURE_NO_WARNINGS 2 #define HOME 3 //#define NDEBUG 4 #include <iostream> 5 #include <stdexcept> 6 #include <cassert> 7 #include <ctype.h> 8 #include <locale> 9 #include <iterator> 10 #incl

和指针相关的两个特殊运算符,和相关的等价表达式

和指针相关的两个特殊运算符: 一."&" 取地址运算符,通过&运算符可以取出普通变量的地址: 二."*"  有两种意义: 1.  为指针标志: 是否为指针标志主要看前面是否有类型,此处有一个int 2.  为指针运算符:    在等号右面为取值.*可以取出指针变量所指向的普通变量的值.   在等号左面为赋值.*可以将指针变量所指向的普通变量的值,修改为其他. 3.  为乘法运算符.当且仅当左右的都为变量时.略. 如 int a, b =20, c=3

指针相关知识

1.指针:内存地址 指针变量:专门用一个变量来存放指针,这种变量成为指针变量.因此,一个指针变量的值就是某个内存单元的地址(或指针) “指针”是指地址,是常量,“指针变量”是指取值为地址的变量 2.二级指针 指针变量中主要存放目标变量的地址,这种指针称为一级指针.如果指针变量中存放的不是变量的地址,而是存放一级指针变量的地址,则这种指针称为二级指针. 格式: [存储类型]  数据类型符    **变量名: 例如: int a=5; int *p1; int **p2; p1=&a; p2=&

【C语言】【指针相关知识小结】

1.int *p = NULL 和 *p = NULL的区别 int *p = NULL指的是将一个指针初始化为NULL,具体过程为 int *p; p = NULL. 2.&a与a的区别 int a[5]; int *p = &a;//?? int *q = a;//?? 这样的代码对吗? 解释: &a得到数组的地址. a表示数组首元素的首地址. &a的a的值一样,两个指向的位置是相同的,但是意义不同. 3.指针和数组的定义与声明 什么是声明和定义: C语言中的对象必须只

指针相关

指针指向的都是一个代表内存地址的长的十六进制数.一位十六进制数需要四个2进制数表示,即0.5字节. 指针存的是一个地址,在32位操作系统里面,最大寻址空间位0~2^32-1,即4个字节(32位)就可以表示,相应的在64位操作系统环境中用8个字节表示指针,16位系统2字节. 指针本身所占空间大小与所指对象所占空间大小无关,只与操作系统能够有关.

C语言指针相关面试题

在分析指针的代码时,脑子里一定要有一张内存的分配图,用于分析各个变量的存储情况. 1.用变量a给出下面的定义 a) 一个整型数(An integer) b)一个指向整型数的指针( A pointer to an integer) c)一个指向指针的的指针,它指向的指针是指向一个整型数( A pointer to a pointer to an intege)r d)一个有10个整型数的数组( An array of 10 integers) e) 一个有10个指针的数组,该指针是指向一个整型数的

C++指针相关问题

1.指针的类型和指针所指向的类型 如定义一个指针 int *ptr,  指针ptr的类型是int*,而指针所指向的类型是int. 例1: int *p; //指针p类型是int* int a; char b; p=&a; //指针p指向类型是int,a为int型,该语句可使p指向a *p=10; //即使得a=10 但语句 p=&b; 错误,因为在声明语句int *p; 中就表示了p指向的类型是int,而b是char类型,故该语句不合法 2.*与&的理解 &为取地址运算,运

C++学习---指针相关

1.指向 “指针对象” 的 ”指针” 一般指针 int *p1,ival =42; p1 = &ival; 或者 int ival =42,*p1=&val; 代表一个指针对象指向一个同类型的地址区域,如果想要得到值用解析符*即可 *p1 //p1存储的是一段内存地址,*符号解析该地址等到值42 指向 指针对象 的 指针 上图是指向int对象的指针,而现在的对象则是指针对象. int i = 42,*p1,**p2 ; p1 = &i; p2 = &p1; 需要使用**是有

指针相关笔记

指针的简单介绍: /** 目的:指针的定义及简单介绍时间:2015年7月15日10:43:50 */ #include <stdio.h> int main(void){ int i = 3; int j; int * p; //p是变量的名字,int * 表示的是p只能存放int * 类型的变量的地址 // error cannot convert from 'int' to 'int *' 因为p只能存放int类型变量的地址,而不能存放int类型变量的值 // p = i; //p = 5