簡體   English   中英

使用char指針的字符串

[英]Strings using char pointers

#include<stdio.h>
 int main(void)
 {
   char s='a',*j;
   j=&s;
   *j='b';
   printf("s is %c",s);
 }

輸出:s是b。

從該程序中,我們可以通過更改指針的值來更改分配給常量char的值。

但是,以下程序不會發生這種情況。

#include<stdio.h>
int main(void)
{
  char *p="Hello";
  *p='z';   //By assuming that it should change 'H' as *p points to address of H//
  printf("%c",*p);
}

輸出:分段故障核心已轉儲

即使在這種情況下,由於我們正在操縱它的指針,因此Hello更改中第0個char的值也不應,* p指向H地址的值。此處的預期輸出應為“ zello”。

從該程序中,我們可以通過更改指針的值來更改分配給常量char的值。

您的第一個代碼段中沒有“恆定字符”。 它只是用一些值初始化的char類型的變量。 它分配在RW內存中,因此您可以獲取它的地址並修改內容。

在第二個代碼段中,您定義了一個指針,並為其分配了字符串文字地址 ,該地址在不應該寫入的內存中分配(通常是只讀的,或者只是向其寫入的未定義行為)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM