指向常量的指针和指针常量(孙鑫)

指向常量和指针常量的指针

1.指向常量的指针

char ch [5] =“ lisi”;

我们首先定义一个字符数组,它有五个元素,我们使用一个常量字符串为它分配一个值亚博电竞 ,应该注意的是,这种赋值形式只能与数组定义同时进行,为什么在这里我们定义的五个元素不是四元素字符数组?请注意,对于常量字符串指向字符常量的指针,将在末尾自动添加“ \ 0”,因此在此我们定义5而不是4。

指向字符串常量的指针_指向字符常量的指针_指向类的函数的指针

我们假设0088 :: 4400是在内存中分配的字符数组ch的第一个地址,然后我们使用

const char * pStr = ch;

定义一个指向常量的指针变量。应该注意的是,const在char的前面。实际上,const在char前面或之后char相同,但是通常我们在char前面定义它。使用const char *定义一个指向常量的指针变量,然后使用此字符数组为该指向常量的指针变量分配一个值。我们知道数组名称代表数组的第一个地址,因此上述操作等效于将字符数组ch的第一个地址分配给此指针变量。然后,我们定义的pStr是一个指向常量的指针变量,也就是说我们不能使用pStr修改内存中数据的内容,但是pStr本身的值(即地址值)可以是修改的。表示常量的指针表示其指向的对象是常量。让我们再次看下面的代码。

* pStr =‘w’; //错误

指向类的函数的指针_指向字符串常量的指针_指向字符常量的指针

pStr =‘hqlong’; //正确

在第一句话中,我们要使用* pStr来修改第一个字节所指向的内容鸭脖官网 ,也就是说,我们将指针常量的第一个字节的内容设置为'w',那么这是错误的,因为从上面我们知道这是一个指向常量的指针变量,也就是说,不能修改该指针变量指向的地址的内容。我们知道常量无法修改,因此在这里,这种分配是错误的。

在第二个表达式中,我们使用字符串为该变量分配值。此操作等效于将此字符串的地址分配给此变量。 pStr的内容(即指针值或地址)可以修改,因此此操作是允许且正确的。

请注意,尽管我们无法修改pStr指向的内存的内容,但是对于上面的字符数组,我们仍然可以使用字符数组来更改内存中数据的内容,因此请注意这一点。差异。

在声明时,我们声明pStr是指向常量的指针,因此我们确保在编译时不能通过pStr修改它在内存中引用的内容。当我们声明一个函数时指向字符常量的指针,我们使用指针来传递参数。我们通常会声明该行参数以指向常量指针类型,以便在传入实际参数时,该行参数类型是指向常量的指针类型,因此我们不能使用该行参数来修改其指向的内容从而确保数据的一致性。

2.指针常量

我们还定义了字符数组:

char ch [5] =“列表”;

char * const pStr = ch;

请注意第二行,这与以前的常量常量定义不同。 const的位置在*和pStr之间五大联赛官网 ,而指向常量的指针在char之前或之后。同样,我们使用字符数组来分配指针,即,将字符数组的第一个地址分配给该指针。每个人都应该注意,在定义指针常量时必须对其进行分配,也就是说,我们不能先定义它,然后再分配它。然后,对于指向常量的前一个指针,我们可以先对其进行定义,然后在下一行中对其进行赋值。所以我们必须注意这里的区别。

指针常量这意味着指针本身是一个常量,这意味着不能修改此指针的值,但是可以修改指针的内容天津快3 ,这与常量的指针相反。

让我们举两个上面的例子:

pStr =‘hqlong’; //错误

* pStr =‘w’; //正确

在代码的第一句中,我们将一个字符串分配给指针变量,即,将字符串的第一个地址分配给字符变量。由于指针常量的地址无法修改,因此在此提供它是错误的。在我们的编译中,将发生错误。

代码的第二句话是修改pStr指向的存储器的第一个字节的内容。我们想要将其修改为“ w”。此操作是正确的。我们知道指针常量的地址不能修改,但是地址的内容可以修改。

因此,在这里,每个人都应注意指向常量的指针和指向常量的指针之间的区别。我们不能修改指向常量的指针所在的内存地址的内容,因为它所引用的内容是常量。但是我们可以修改其地址,即可以通过修改其地址值来修改其值。指针常量正好相反。该指针是一个常量,并且该指针也是一个地址,因此该地址是一个常量,因此我们无法修改其地址,但可以修改地址中的值,因此每个人也应注意。

老王
地址:深圳市福田区国际电子商务产业园科技楼603-604
电话:0755-83586660、0755-83583158 传真:0755-81780330
邮箱:info@qbt8.com
地址:深圳市福田区国际电子商务产业园科技楼603-604
电话:0755-83174789 传真:0755-83170936
邮箱:info@qbt8.com
地址:天河区棠安路288号天盈建博汇创意园2楼2082
电话:020-82071951、020-82070761 传真:020-82071976
邮箱:info@qbt8.com
地址:重庆南岸区上海城嘉德中心二号1001
电话:023-62625616、023-62625617 传真:023-62625618
邮箱:info@qbt8.com
地址:贵阳市金阳新区国家高新技术开发区国家数字内容产业园5楼A区508
电话:0851-84114330、0851-84114080 传真:0851-84113779
邮箱:info@qbt8.com