1. 程式人生 > >指標指向字串常量和陣列存放字串常量(char *p="abcd", char p[]="abcd")

指標指向字串常量和陣列存放字串常量(char *p="abcd", char p[]="abcd")

指標指向字串常量和陣列存放字串常量(char *p=”abcd”, char p[]=”abcd”)

程式碼

這裡寫圖片描述

結果

這裡寫圖片描述

分析

  • fun()函式
    首先abacd字串是在靜態常量區分配的記憶體,然後指標c在棧裡分配的記憶體,然後將指標指向”abacd”所在的記憶體塊。所以程式結束後,返回的是指標c的內容,指標裡存放的都是什麼???地址。在fun()函式中,c存放的是”abacd”的地址,而這個地址所在記憶體是在靜態常量區中,所以fun()函式結束後,是不會被釋放的。因此在main函式中,可以輸出abacd
  • fun1()函式
    char c[]陣列是在棧中,注意,陣列是分配了記憶體的的,他是區域性變數,是在棧中分配的記憶體,也就是說,當fun1()函式結束後,char c[]的記憶體就會被釋放。現在來看char c[]=”abcd”,由於char c[]是分配了記憶體的,所以這裡只是將”abcd”複製到char c[]在棧中分配的記憶體中去。這裡就和指標區別出來了,指標是不分配記憶體的,在fun函式中c指向的是一塊靜態常量區中的記憶體,所以,fun函式返回的是靜態常量區中記憶體地址,在main函式中能訪問到。而fun1函式中,返回的是棧區中的記憶體,當fun1函式結束後,就被釋放了。
    (不清楚棧、堆、全域性區(靜態區)的可以去看看相關資料)

相關推薦

指標指向字串常量陣列存放字串常量char *p="abcd", char p[]="abcd"

指標指向字串常量和陣列存放字串常量(char *p=”abcd”, char p[]=”abcd”) 程式碼 結果 分析 fun()函式 首先abacd字串是在靜態常量區分配的記憶體,然後指標c在棧裡分配的記憶體,然後將指標指向”abacd”

字元、字串、字元陣列字串指標變數

字元和字串的區別 字元 如下,定義char,每一個字元一般情況下佔用8個位元組。 char c, ch; 字串 例如"helloworld"; 注意' '和" "的區別,後者為常量字串 在C++中,有兩種型別的字串表示形式: C-風格字

字串方法陣列的方法

一.字串方法 1、charCodeAt方法返回一個整數,代表指定位置字元的Unicode編碼。 strObj.charCodeAt(index)  說明:  index將被處理字元的從零開始計數的編號。有效值為0到字串長度減1的數字。  如果指定位置沒有字元,將返回N

Java之Json陣列字串、物件之間的轉換

1、字串和物件轉換為Json JSONObject jsonStr = JSONObject.fromObject(String);2、陣列轉換為Json JSONArray.fromObject(Array[])3、Json轉換成字串,使用toString()方法即可

一起學python-opencv四字串操作陣列運算及矩陣運算

沒錯,這個應該是暫時的numpy的第一階段學習的最後一講。在下一講將要先回歸到opencv,因為暫時這些numpy的知識肯定是夠好幾講用的,numpy這個東西確實有點枯燥,所以先回歸到opencv應用一下,理論到實踐的過程是需要的。我們還是耐心地 字串函式

C# 16進位制與字串、位元組陣列之間的轉換

1.請問c#中如何將十進位制數的字串轉化成十六進位制數的字串 //十進位制轉二進位制 Console.WriteLine("十進位制166的二進位制表示: "+Convert.ToString(166, 2)); //十進位制轉八進位制 Console.WriteLine("十進位制166的八進位

go語音基礎之字串型別 字元與字串型別的區別

1、字串型別 示例1: package main //必須有一個main包 import "fmt" func main() { var str1 string str1 = "abc" fmt.Println("str1 = ", str1) } #執行結果

PHP explode() 把字串打散為陣列字串陣列

explode() 定義:explode() 函式使用一個字串分割另一個字串,並返回由字串組成的陣列 語法:explode(separator,string,limit); separator—必需。規定在哪裡分割字串。 string--------必需。要分割的字串。

Find All Anagrams in a String給定字串s非空字串p,找出p中是s中點的所有子串

LeetCode438號問題。 問題描述:給定一個字串s和一個非空字串p,找出p中的所有是s的anagrams字串的子串,返回這些子串的起始索引。 s=”cbaebabacd” p=”abc” 則返回的是[0,6] 位置0 cba,位置6 bac也就是不考

正則表示式匹配以某字串開始結尾的字串

今天在整理MvvmCross(c# mvvm跨平臺框架)文件做epub電子書時,遇到到了文字顯示不太好,需要去掉指定開頭的字串。 然後寫了下面這個正則表示式 正則表示式 <a id="user

String 類------字串轉字元陣列判斷字串中是否含有字母

//toCharArray() public class Array{ //判斷陣列是全否由數字組成 public static void main(String args[]){ String data="a123456";

Guice 學習常量屬性的註入 Constant and Property Inject

-a ret roc build ann class google mes ota 1、常量註入方式 package com.guice.ConstantInjectDemo; import com.google.inject.Binder; i

求一個二維陣列所有子陣列的最大值郭少周,陳澤

小組成員:陳澤 郭少周 設計流程:     設計要求.:1. 輸入一個二維整形陣列,數組裡有正數也有負數。                     2.二維陣列中連續的

字串+雜湊表+小動態規劃Longest Substring Without Repeating Characters -- LeetCode

Longest Substring Without Repeating Characters 題目難度:3   面試頻率 2  . (1-5) 題目描述: Given a string, find the length of the longest substrin

java中定義常量C#中定義常量的區別

一、常量定義的基本注意事項。   在Java語言中,主要是利用final關鍵字()來定義常量。當常量被設定後,一般情況下就不允許再進行更改。如可以利用如下的形式來定義一個常量:final double PI=3.1315。在定義這個常量時,需要注意如下內容:   一是常

Centos6Centos7上安裝LAMPPHP-FPM模式、編譯安裝

安裝 centos6 lamp -------------------------實驗:CentOS 7安裝LAMP(PHP-FPM模式)---------------------1、安裝PHP-FPM首先要卸載PHP: yum remove php yum install php-fpm

基於Python3.7opencv的人臉識別含資料收集,模型訓練

前言 第一次寫部落格,有點緊張和興奮。廢話不多說,直接進入正題。如果你渴望使你的電腦能夠進行人臉識別;如果你不想了解什麼c++、底層演算法;如果你也不想買什麼樹莓派,安裝什麼幾個G的opencv;如果你和我一樣是個還沒入門的小白,但是想體驗一下人臉識別的魅力。那麼恭喜你,這篇文章就是為你準備的。讓我們開始吧

前端jsp頁面 列舉類 搜尋 查詢結果動態展示 完全依賴介面 無需任何改動

前端頁面 應對列舉類 搜尋  和 查詢結果展示 (完全依賴介面 無需任何改動)  【問題現象產生】:後臺介面方提供的列舉型別總是變動,導致前端頁面如果寫死列舉型別,容易展示出問題(搜尋和查詢展示),具體就是少展示或多展示  【問題應對方案】:採

SSM框架構建積分系統基本商品檢索系統Spring+SpringMVC+MyBatis+Lucene+Redis+MAVEN

  專案原始碼https://github.com/FuZhucheng/SSM.git 使用前必讀 一、請使用IDEA工具匯入,open。 二、匯入資料庫檔案。 (第一篇部落格是ssm+redis.sql--未完善版本, 第二篇部落格是完善資料庫版本ssm+redis+l

剛從阿里面試回來,想程式設計師們談談想進阿里的必看

       最近面試了多家網際網路公司,最終收到了阿里offer,面試前在網上也蒐集了面試題目, 但有些不是過時的,就是題目雜亂,歸納不繫統。 這次面試過後,我把面試上阿里的面試過程整理了一下,當做是一個總結,後來有朋友問我要面試記錄,索性發布出來,跟大家一起分享